From 33bad95a55cc48f6c2bb78f1745219a81e7632c5 Mon Sep 17 00:00:00 2001 From: Xiaoyang Liu Date: Thu, 28 May 2026 21:54:23 +0800 Subject: [PATCH] Update CredentialTile3 class visibility and enhance BitmapControl functionality - Changed the visibility of the `CredentialTile3` class from internal to public. - Added a new property `EnableTransparent` to `BitmapControl` to allow transparency in bitmap display. - Updated dependences and version number. --- .../Controls/BitmapControl.cs | 13 +++++++++++-- ...redentialTile3.ICredentialProviderCredential3.cs | 3 ++- src/Lithnet.CredentialProvider/CredentialTile3.cs | 2 +- .../Lithnet.CredentialProvider.csproj | 5 ++--- 4 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/Lithnet.CredentialProvider/Controls/BitmapControl.cs b/src/Lithnet.CredentialProvider/Controls/BitmapControl.cs index 15fa7ef..00cc58f 100644 --- a/src/Lithnet.CredentialProvider/Controls/BitmapControl.cs +++ b/src/Lithnet.CredentialProvider/Controls/BitmapControl.cs @@ -24,6 +24,11 @@ protected BitmapControl(string key, string label, bool isProviderLogo, Bitmap bi protected BitmapControl(BitmapControl source) : base(source) { } + /// + /// Gets or sets a value indicating whether the bitmap should be displayed with transparency enabled. + /// + public bool EnableTransparent { get; set; } = false; + /// /// Specifies the background color that should replace any transparent elements of the image. This defaults to #707070 /// @@ -84,11 +89,15 @@ internal IntPtr GetBitmapBuffer(out uint size) } var image = Bitmap.FromHbitmap(hbitmap); - + if (this.EnableTransparent) + { + image.MakeTransparent(this.BackgroundColor); + } IntPtr buffer = IntPtr.Zero; using (MemoryStream ms = new MemoryStream()) { - image.Save(ms, ImageFormat.Bmp); + var format = this.EnableTransparent ? ImageFormat.Png : ImageFormat.Bmp; + image.Save(ms, format); var bitmapBytes = ms.ToArray(); size = (uint)bitmapBytes.Length; buffer = Marshal.AllocCoTaskMem(bitmapBytes.Length); diff --git a/src/Lithnet.CredentialProvider/CredentialTile3.ICredentialProviderCredential3.cs b/src/Lithnet.CredentialProvider/CredentialTile3.ICredentialProviderCredential3.cs index 088b9e5..4869416 100644 --- a/src/Lithnet.CredentialProvider/CredentialTile3.ICredentialProviderCredential3.cs +++ b/src/Lithnet.CredentialProvider/CredentialTile3.ICredentialProviderCredential3.cs @@ -3,7 +3,7 @@ namespace Lithnet.CredentialProvider { - internal abstract partial class CredentialTile3 : ICredentialProviderCredential3 + public abstract partial class CredentialTile3 : ICredentialProviderCredential3 { int ICredentialProviderCredential3.GetBitmapBufferValue(uint dwFieldID, out uint pImageBufferSize, out IntPtr ppImageBuffer) { @@ -19,6 +19,7 @@ int ICredentialProviderCredential3.GetBitmapBufferValue(uint dwFieldID, out uint if (this.Controls.TryGetControl(dwFieldID, FieldType.TileImage, out var instance)) { var hbitmap = instance.GetBitmapBuffer(out pImageBufferSize); + ppImageBuffer = hbitmap; return HRESULT.S_OK; } diff --git a/src/Lithnet.CredentialProvider/CredentialTile3.cs b/src/Lithnet.CredentialProvider/CredentialTile3.cs index 20207b1..fa0f365 100644 --- a/src/Lithnet.CredentialProvider/CredentialTile3.cs +++ b/src/Lithnet.CredentialProvider/CredentialTile3.cs @@ -7,7 +7,7 @@ namespace Lithnet.CredentialProvider /// Represents a user credential tile that implements the functionality of and , but includes support for dynamically updating bitmap images. /// /// This interface is public, but undocumented by Microsoft. It is recommended to use tiles unless this specific functionality is needed - internal abstract partial class CredentialTile3 : CredentialTile2 + public abstract partial class CredentialTile3 : CredentialTile2 { protected CredentialTile3(CredentialProviderBase credentialProvider) : this(credentialProvider, null) { } diff --git a/src/Lithnet.CredentialProvider/Lithnet.CredentialProvider.csproj b/src/Lithnet.CredentialProvider/Lithnet.CredentialProvider.csproj index 7dfebbb..24aa58d 100644 --- a/src/Lithnet.CredentialProvider/Lithnet.CredentialProvider.csproj +++ b/src/Lithnet.CredentialProvider/Lithnet.CredentialProvider.csproj @@ -1,6 +1,6 @@  - net6.0-windows;net7.0-windows;net8.0-windows;net461 + net10.0-windows;net7.0-windows;net8.0-windows;net461 false Library true @@ -17,8 +17,7 @@ Lithnet Copyright 2023 Lithnet Pty Ltd Lithnet Windows Credential Provider - 1.1.0 - beta1 + 1.1.28 Lithnet true true