C#在form中绘制圆形图案的问题,急求!!!
主要想实现的效果是form1中按下按钮,可以将form2中的空心圆变为实心圆主要的画圆的代码,不需要非用picturebox的paint...网上能查到的都试过了,然而都...
主要想实现的效果是form1中按下按钮,可以将form2中的空心圆变为实心圆
主要的画圆的代码,不需要非用picturebox的paint...网上能查到的都试过了,然而都不显示!!!按解析试了一下改进方法也都没成功...
已经走头无路了...希望哪位大神能行行好直接做个工程分享QAQ...拜...
解决问题后金币重谢啊QAQ【虽然可能大神应该并不在乎这点东西吧... 展开
主要的画圆的代码,不需要非用picturebox的paint...网上能查到的都试过了,然而都不显示!!!按解析试了一下改进方法也都没成功...
已经走头无路了...希望哪位大神能行行好直接做个工程分享QAQ...拜...
解决问题后金币重谢啊QAQ【虽然可能大神应该并不在乎这点东西吧... 展开
3个回答
展开全部
对熟悉GDI+编程的人来说,这个功能并不难,只要不停的切换Graphics.FillEllipse和DrawEllipse函数就可以了,贴一下Form2的关键代码。
public partial class Form2 : Form
{
private const int Diameter = 200; //圆的直径
private bool _fillCircle;
public Form2()
{
InitializeComponent();
}
private Point LeftTop
{
get
{
int x = DisplayRectangle.Width/2;
int y = DisplayRectangle.Height/2;
int radius = Diameter/2;
return new Point(x - radius, y - radius);
}
}
public void ReDraw()
{
// 切换空心和实心
_fillCircle = !_fillCircle;
// 重绘窗体
Invalidate();
}
protected override void OnPaint(PaintEventArgs e)
{
e.Graphics.SmoothingMode = SmoothingMode.HighQuality;
// 取得圆形左上角的坐标位置
Point circleStart = LeftTop;
if (_fillCircle)
{
e.Graphics.FillEllipse(new SolidBrush(Color.CornflowerBlue), circleStart.X, circleStart.Y, Diameter, Diameter);
e.Graphics.DrawEllipse(new Pen(Color.Red, 1.0f), circleStart.X, circleStart.Y, Diameter, Diameter);
}
else
{
e.Graphics.DrawEllipse(new Pen(Color.CornflowerBlue, 1.0f), circleStart.X, circleStart.Y, Diameter, Diameter);
}
}
}
然后你要在Form1中调用Form2的ReDraw函数
public partial class Form1 : Form
{
private Form2 _form2;
public Form1()
{
InitializeComponent();
}
private void btnDraw_Click(object sender, EventArgs e)
{
if (_form2 == null || _form2.IsDisposed)
_form2 = new Form2();
_form2.ReDraw();
_form2.Show();
}
}
如果看不太明白,就直接下载项目吧。
展开全部
每个控件都有一个获取画布的方法,只要用画笔或画刷在返个画布上画图就可以了。另外要在窗体重新显示时仍然看到图片,则要把画图的代码写在窗体的重画方法里。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
整两张图片替换最方便.....
追问
我也想啊TAT...可是打算这么干之后被老师发现了...她要求要用画图...虽然只是整个程序中很小的一部分...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询