7

コードにがありSystem.Drawing.Bitmapます。

幅は固定されており、高さは異なります。

私がやりたいのは、ビットマップの周りに約20ピクセルの白い境界線を、4つのエッジすべてに追加することです。

これはどのように機能しますか?

4

3 に答える 3

9

ビットマップの後ろに長方形を描くことができます。長方形の幅は(Bitmap.Width + BorderWidth * 2)になり、位置は(Bitmap.Position-new Point(BorderWidth、BorderWidth))になります。または、少なくともそれは私がそれについて行く方法です。

編集:これは、それを実装する方法を説明する実際のソースコードです(画像を描画するための専用のメソッドがある場合):

private void DrawBitmapWithBorder(Bitmap bmp, Point pos, Graphics g) {
    const int borderSize = 20;

    using (Brush border = new SolidBrush(Color.White /* Change it to whichever color you want. */)) {
        g.FillRectangle(border, pos.X - borderSize, pos.Y - borderSize, 
            bmp.Width + borderSize, bmp.Height + borderSize);
    }

    g.DrawImage(bmp, pos);
}
于 2012-11-13T08:20:12.720 に答える
9

Bitmapクラスの「SetPixel」メソッドを使用して、必要なピクセルを色で設定できます。ただし、以下に示すように、「Graphics」クラスを使用する方が便利です。

bmp = new Bitmap(FileName);
//bmp = new Bitmap(bmp, new System.Drawing.Size(40, 40));

System.Drawing.Graphics gr = System.Drawing.Graphics.FromImage(bmp);

gr.DrawLine(new Pen(Brushes.White, 20), new Point(0, 0), new Point(0, 40));
gr.DrawLine(new Pen(Brushes.White, 20), new Point(0, 0), new Point(40, 0));
gr.DrawLine(new Pen(Brushes.White, 20), new Point(0, 40), new Point(40, 40));
gr.DrawLine(new Pen(Brushes.White, 20), new Point(40, 0), new Point(40, 40));
于 2012-11-13T08:56:55.383 に答える
6

以下の関数は、ビットマップ画像の周囲に境界線を追加します。元の画像は、境界線の幅だけサイズが大きくなります。

private static Bitmap DrawBitmapWithBorder(Bitmap bmp, int borderSize = 10)
{
    int newWidth = bmp.Width + (borderSize * 2);
    int newHeight = bmp.Height + (borderSize * 2);

    Image newImage = new Bitmap(newWidth, newHeight);
    using (Graphics gfx = Graphics.FromImage(newImage))
    {
        using (Brush border = new SolidBrush(Color.White))
        {
            gfx.FillRectangle(border, 0, 0,
                newWidth, newHeight);
        }
        gfx.DrawImage(bmp, new Rectangle(borderSize, borderSize, bmp.Width, bmp.Height));

    }
    return (Bitmap)newImage;
}
于 2019-05-08T07:39:20.917 に答える