与其他方法的PictureBox PaintEvent
在我的表格中只有一个图片盒,我想在这个图片盒上画一个方法,但是我不能这样做,而不是工作。方法是:
private Bitmap Circle() { Bitmap bmp; Graphics gfx; SolidBrush firca_dis=new SolidBrush(Color.FromArgb(192,0,192)); bmp = new Bitmap(40, 40); gfx = Graphics.FromImage(bmp); gfx.FillRectangle(firca_dis, 0, 0, 40, 40); return bmp; }
图片框
private void pictureBox2_Paint(object sender, PaintEventArgs e) { Graphics gfx= Graphics.FromImage(Circle()); gfx=e.Graphics; }
你需要决定你想要做什么:
- 绘制成图像或
- 吸引到控制 ?
你的代码是两者的混合,这就是为什么它不工作..!
这里是如何绘制到 Control
:
private void pictureBox1_Paint(object sender, PaintEventArgs e) { e.Graphics.DrawEllipse(Pens.Red, new Rectangle(3, 4, 44, 44)); .. }
这里是如何绘制到 Image
PictureBox
::
void drawIntoImage() { using (Graphics G = Graphics.FromImage(pictureBox1.Image)) { G.DrawEllipse(Pens.Orange, new Rectangle(13, 14, 44, 44)); .. } // when donw with all drawing you can enforce the display update by calling: pictureBox1.Refresh(); }
两种绘画方式都是持久的。 后者改变为图像的像素,前者不。
因此,如果像素被拖入图像中,并且缩放,拉伸或移动图像,则像素将随之一起移动。 绘制到PictureBox控件顶部的像素将不会这样做!
当然,对于这两种绘制方式,你可以改变所有通常的部分,比如绘图命令,也许在FillEllipse
之前添加一个DrawEllipse
,使用它们的笔刷types和Colors
以及尺寸添加Pens
和Brushes
。
private static void DrawCircle(Graphics gfx) { SolidBrush firca_dis = new SolidBrush(Color.FromArgb(192, 0, 192)); Rectangle rec = new Rectangle(0, 0, 40, 40); //Size and location of the Circle gfx.FillEllipse(firca_dis, rec); //Draw a Circle and fill it gfx.DrawEllipse(new Pen(firca_dis), rec); //draw a the border of the cicle your choice }