我用下面的代碼來呈現透明圖標:如何將透明光標渲染爲保存Alpha通道的位圖?
private void button1_Click(object sender, EventArgs e)
{
// using LoadCursorFromFile from user32.dll
var cursor = NativeMethods.LoadCustomCursor(@"d:\Temp\Cursors\Cursors\aero_busy.ani");
// cursor -> bitmap
Bitmap bitmap = new Bitmap(48, 48, PixelFormat.Format32bppArgb);
Graphics gBitmap = Graphics.FromImage(bitmap);
cursor.DrawStretched(gBitmap, new Rectangle(0, 0, 32, 32));
// 1. Draw bitmap on a form canvas
Graphics gForm = Graphics.FromHwnd(this.Handle);
gForm.DrawImage(bitmap, 50, 50);
// 2. Draw cursor directly to a form canvas
cursor.Draw(gForm, new Rectangle(100, 50, 32, 32));
cursor.Dispose();
}
可惜我無法呈現透明光標爲位圖!它在我直接將Cursor繪製到窗體畫布時起作用,但當我將Cursor繪製到位圖時出現問題。 任何意見是高度讚賞。
呀,GDI +已經知道問題繪製圖標時,可以保留Alpha通道。也許有人知道解決方法,但我懷疑最好的方法是使用GDI代替。 – 2010-12-15 16:06:58
嗯......很可惜,因爲我想留在託管代碼中。你知道嗎,如果Windows 7仍然使用GDI來渲染透明度遊標? – 2010-12-15 16:27:26
看起來很熟悉。此處需要署名。如果你注意到這一點,你可能會得到更好的答案。 – 2010-12-15 16:40:02