| File: System\Drawing\Brush.cs | Web Access |
| Project: src\winforms\src\System.Drawing.Common\src\System.Drawing.Common.csproj (System.Drawing.Common) |
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.ComponentModel; namespace System.Drawing; public abstract unsafe class Brush : MarshalByRefObject, ICloneable, IDisposable { // Handle to native GDI+ brush object to be used on demand. private GpBrush* _nativeBrush; public abstract object Clone(); protected internal void SetNativeBrush(IntPtr brush) => SetNativeBrushInternal((GpBrush*)brush); internal void SetNativeBrushInternal(GpBrush* brush) => _nativeBrush = brush; [Browsable(false), EditorBrowsable(EditorBrowsableState.Never)] internal GpBrush* NativeBrush => _nativeBrush; public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { if (_nativeBrush is not null) { Status status = !Gdip.Initialized ? Status.Ok : PInvokeGdiPlus.GdipDeleteBrush(_nativeBrush); _nativeBrush = null; Debug.Assert(status == Status.Ok, $"GDI+ returned an error status: {status}"); } } ~Brush() => Dispose(disposing: false); }