if (txtHeight.Text != "" && txtLeftMargin.Text != "" && txtTopMargin.Text != "" && txtWidth.Text != "")
{
pictureBox1.Image = bkp;
Pen pen = new Pen(Color.Red);
Graphics g = pictureBox1.CreateGraphics();
g.DrawRectangle(pen, Convert.ToInt16(txtLeftMargin.Text), Convert.ToInt16(txtTopMargin.Text), Convert.ToInt16(txtHeight.Text), Convert.ToInt16(txtWidth.Text));
}
答案 0 :(得分:1)
尝试使用此代码:
Image backgroundImage = (Image)bkp.Clone();
using (Graphics gfx = Graphics.FromImage(backgroundImage))
using (Pen pen = new Pen(Color.Red))
{
gfx.DrawRectangle(pen,
Convert.ToInt16(txtLeftMargin.Text),
Convert.ToInt16(txtTopMargin.Text),
Convert.ToInt16(txtHeight.Text),
Convert.ToInt16(txtWidth.Text));
}
pictureBox1.Image = backgroundImage;
检查“bkp” -image是否为空并且大于1x1,或者您看不到任何东西。否则它应该工作。我用“Image.FromFile()”对它进行了测试,我将硬盘中的图像加载到“backgroundImage” - 变量。图像的尺寸设置了最大绘图区域。
答案 1 :(得分:0)
正如许多其他人一样,你没有采取正确的方式:
您在winforms中绘制的所有内容都必须在控件的paint
事件中绘制,或者从那里触发。所以你必须:
Rectangle
的几何数据(如果这就是你正在做的事情),paint
事件(使用事件参数中的e.Graphics
)和invalidating
控件启动它..