Ejemplo n.º 1
0
        private void DrawOnCanvas(FDBitmap imageData, int posX, int posY, byte rotation = 0)
        {
            if (imageData == null)
            {
                return;
            }

            int canvasX = (posX + 2) * unitWidth - 1;
            int canvasY = (posY + 2) * unitHeight - 1;

            for (int i = imageData.Width - 1; i >= 0; i--)
            {
                for (int j = imageData.Height - 1; j >= 0; j--)
                {
                    int targetX = canvasX + i + 1 - imageData.Width;
                    int targetY = canvasY + j + 1 - imageData.Height;

                    if (targetX < 0 || targetY < 0 || targetX >= canvasWidth || targetY >= canvasHeight)
                    {
                        continue;
                    }

                    int targetIndex = (targetY * canvasWidth + targetX) << 2;

                    Color clr = imageData.GetPixelColor(i, j, rotation);

                    // For transparent color, just skip
                    if (clr.A == 0 && clr.R == 0 && clr.G == 255 && clr.B == 255)
                    {
                        continue;
                    }

                    if (clr.A != 0 && clr.A != 255)
                    {
                        canvasData[targetIndex]     = (byte)((canvasData[targetIndex] + clr.R) / 2);
                        canvasData[targetIndex + 1] = (byte)((canvasData[targetIndex] + clr.G) / 2);
                        canvasData[targetIndex + 2] = (byte)((canvasData[targetIndex] + clr.B) / 2);
                        canvasData[targetIndex + 3] = 255;
                    }
                    else
                    {
                        canvasData[targetIndex]     = clr.R;
                        canvasData[targetIndex + 1] = clr.G;
                        canvasData[targetIndex + 2] = clr.B;
                        canvasData[targetIndex + 3] = clr.A;
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public ImageDataExporter(FDBitmap data)
 {
     this.bitmapData = data;
 }