44 lines
1.1 KiB
C#
44 lines
1.1 KiB
C#
using System.Diagnostics.CodeAnalysis;
|
||
using System.Runtime.ConstrainedExecution;
|
||
using System.Runtime.InteropServices;
|
||
using System.Security;
|
||
|
||
namespace YY.Admin.Tools.Interop;
|
||
|
||
[SuppressMessage("ReSharper", "UnusedMember.Local")]
|
||
internal sealed class BitmapHandle : WpfSafeHandle
|
||
{
|
||
[SecurityCritical]
|
||
private BitmapHandle() : this(true)
|
||
{
|
||
//请不要删除此构造函数,否则当使用自定义ico文件时会报错
|
||
}
|
||
|
||
[SecurityCritical]
|
||
private BitmapHandle(bool ownsHandle) : base(ownsHandle, CommonHandles.GDI)
|
||
{
|
||
}
|
||
|
||
[SecurityCritical]
|
||
[ReliabilityContract(Consistency.WillNotCorruptState, Cer.MayFail)]
|
||
protected override bool ReleaseHandle()
|
||
{
|
||
return InteropMethods.DeleteObject(handle);
|
||
}
|
||
|
||
[SecurityCritical]
|
||
internal HandleRef MakeHandleRef(object obj)
|
||
{
|
||
return new(obj, handle);
|
||
}
|
||
|
||
[SecurityCritical]
|
||
internal static BitmapHandle CreateFromHandle(IntPtr hbitmap, bool ownsHandle = true)
|
||
{
|
||
return new(ownsHandle)
|
||
{
|
||
handle = hbitmap,
|
||
};
|
||
}
|
||
}
|