Как преобразовать прозрачный курсор в растровое изображение с сохранением альфа-канала?

Я использую приведенный ниже код для рендеринга прозрачного значка:

    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();
    }

К сожалению, я не могу преобразовать прозрачный курсор в растровое изображение! Это работает, когда я рисую Курсор непосредственно на холсте формы, но возникает проблема, когда я рисую Курсор на растровом изображении. EventArgs e) {// Использование LoadCursorFromFile из user32.dll var cursor = ...

Я использую приведенный ниже код для визуализации прозрачного значка:

    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();
    }

К сожалению, я не могу визуализировать прозрачный курсор в Bitmap! Это работает, когда я рисую Курсор непосредственно на холсте формы, но возникает проблема, когда я рисую Курсор на растровом изображении. EventArgs e) {// использование LoadCursorFromFile из user32.dll var cursor = ...

Я использую приведенный ниже код для визуализации прозрачного значка:

    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();
    }

К сожалению, я не могу визуализировать прозрачный курсор в растровое изображение! Это работает, когда я рисую Курсор непосредственно на холсте формы, но возникает проблема, когда я рисую Курсор на растровом изображении. Мы высоко ценим любые советы.

alt text

9
задан Murat from Daminion Software 15 December 2010 в 05:45
поделиться