我的表格中只有一个图片框,我想用这个图片框上的方法绘制圆圈,但我不能这样做而不能正常工作。方法是:
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;
}
答案 0 :(得分:5)
你需要决定你想做什么:
您的代码是两者的混合,这就是它不起作用的原因。
以下是如何将绘制到 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 done with all drawing you can enforce the display update by calling:
pictureBox1.Refresh();
}
两种绘制方式都是持久的。后者改变为Image的像素,前者不是。
因此,如果像素被绘制到图像中并且您缩放,拉伸或移动图像,则像素将随之移动。绘制在PictureBox控件顶部的像素不会这样做!
当然,对于两种绘制方式,您可以更改所有常用部分,例如绘图命令,可以在FillEllipse
,DrawEllipse
和{{1}之前添加Pens
使用他们的画笔类型和Brushes
以及尺寸..
答案 1 :(得分:0)
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
}