Как я могу ввести наложение на изображение - PullRequest
4 голосов
/ 26 октября 2011

Как я могу манипулировать изображениями, чтобы добавить полупрозрачный оверлей с проверкой 1x1, как второе изображение в C #?

enter image description here enter image description here

Ответы [ 2 ]

2 голосов
/ 27 октября 2011

Мне удалось изменить ответ, который я опубликовал некоторое время назад, и создать наложение в коде. После создания наложенного изображения я использую TextureBrush, чтобы заполнить область исходного изображения. Настройки в коде ниже создали следующее изображение; Вы можете изменить размер и цвет в соответствии с вашими потребностями.

enter image description here enter image description here

// set the light and dark overlay colors
Color c1 = Color.FromArgb(80, Color.Silver);
Color c2 = Color.FromArgb(80, Color.DarkGray);

// set up the tile size - this will be 8x8 pixels, with each light/dark square being 4x4 pixels
int length = 8;
int halfLength = length / 2;

using (Bitmap overlay = new Bitmap(length, length, PixelFormat.Format32bppArgb))
{
    // draw the overlay - this will be a 2 x 2 grid of squares,
    // alternating between colors c1 and c2
    for (int x = 0; x < length; x++)
    {
        for (int y = 0; y < length; y++)
        {
            if ((x < halfLength && y < halfLength) || (x >= halfLength && y >= halfLength)) 
                overlay.SetPixel(x, y, c1);
            else 
                overlay.SetPixel(x, y, c2);
        }
    }

    // open the source image
    using (Image image = Image.FromFile(@"C:\Users\Public\Pictures\Sample Pictures\homers_brain.jpg"))
    using (Graphics graphics = Graphics.FromImage(image))
    {
        // create a brush from the overlay image, draw over the source image and save to a new image
        using (Brush overlayBrush = new TextureBrush(overlay))
        {
            graphics.FillRectangle(overlayBrush, new Rectangle(new Point(0, 0), image.Size));
            image.Save(@"C:\Users\Public\Pictures\Sample Pictures\homers_brain_overlay.jpg");
        }
    }
}
2 голосов
/ 26 октября 2011

Загрузите исходное изображение в system.Drawing.Image, затем создайте из него графический объект.Загрузите 2-е изображение рисунка для проверки, которое вы хотите нарисовать, и используйте созданный графический объект, чтобы повторно нарисовать изображение проверки по исходному изображению.

Не проверенный пример

    Image Original;
    Image Overlay;

    Original = new Bitmap(100, 100, System.Drawing.Imaging.PixelFormat.Format32bppArgb); //Load your real image here.
    Overlay = new Bitmap(2, 2 ,System.Drawing.Imaging.PixelFormat.Format32bppArgb);//Load your 2x2 (or whatever size you want) overlay image here.

    Graphics gr = Graphics.FromImage(Original);
    for (int y = 0; y < Original.Height + Overlay.Height; y = y + Overlay.Height)
    {
        for (int x = 0; x < Original.Width + OverlayWidth; x = x + Overlay.Width)
        {
            gr.DrawImage(Overlay, x, y);
        }  
    }
    gr.Dispose();

После выполнения кода оригинал теперь будет содержать оригинальное изображение с наложенным на него наложением.

...