Я пытаюсь сгенерировать небольшой квадрат 32 на 32 пикселя с прозрачным зазором 10 на 10 в середине.
Это то, что я имею до сих пор:
private Image CreatePicture(){
// Create a new Bitmap object, 32 x 32 pixels in size
Bitmap canvas = new Bitmap(32,32,System.Drawing.Imaging.PixelFormat.Format16bppRgb555);
for(int i=10;i<21;i++){
for(int p=10;p<21;p++){
canvas.SetPixel(i,p,Color.Lime);
}
}
canvas.MakeTransparent(Color.Lime);
// return the picture
return canvas;
}
Это грубо и не будет окончательной "оптимизированной версией", это всего лишь грубый демонстрационный скрипт. Проблема в том, что возвращаемое изображение не прозрачное, а просто серое поле: (.
Любая помощь приветствуется.
Michael
UPDATE:
Я обновил скрипт, установив PixelFormat в формат Alpha RGB, который он действительно принимает без ошибок во время выполнения. Теперь, если я удаляю "canvas.MakeTransparent (Color.Lime);" линия показывает в середине прямоугольник с лаймом, просто серый блок того же цвета, что и серый фон; кажется, что прозрачность распознается, но не влияет на прозрачность!
private Bitmap CreatePicture(){
// Create a new Bitmap object, 50 x 50 pixels in size
Bitmap canvas = new Bitmap(82,82,System.Drawing.Imaging.PixelFormat.Format32bppArgb);
for(int i=10;i<71;i++){
for(int p=10;p<71;p++){
canvas.SetPixel(i,p,Color.Lime);
}
}
canvas.MakeTransparent(Color.Lime);
// return the picture
return canvas;
}