C# 简易的绘图程序 求代码 类似于Windows的画图程序,能够画点、直线、矩形、椭圆等几何形状。

 我来答
安达里士_
2013-12-17 · 超过13用户采纳过TA的回答
知道答主
回答量:26
采纳率:100%
帮助的人:18.5万
展开全部
Bitmap NewBmp = new Bitmap(w, h);//定义画布
                Graphics g = Graphics.FromImage(NewBmp); //定义画笔
                g.SmoothingMode = SmoothingMode.HighQuality;
                g.PixelOffsetMode = PixelOffsetMode.HighQuality;
                g.TranslateTransform(w * bottom, h * top);
                g.ScaleTransform((top - bottom) * w / PointNum, -(top - bottom) * h / MaxCoordinate);            //坐标转换,这里的top,bottom是picturepanel的尺寸
                Pen pen = new Pen(Color.Blue, 0.5f);
                Pen pennew = new Pen(Color.Black, 0.5f);
                float i = 0;
                for (int p = 0; p < 6; p++)
                {
                    i = PointNum * p / HGridNum;
                    g.DrawLine(pennew, i, 0, i, MaxCoordinate);
                }
                i = 0;

                for (int q = 0; q < 11; q++)
                {
                    g.DrawLine(pennew, 0, i, PointNum, i);
                    i = MaxCoordinate * (q + 1) / WGridNum;
                }
                for (int p = 0; p < PointNum - 1; p++)                                      //画曲线
                {
                    g.DrawLine(pen, p, Point[p], (p + 1), Point[p + 1]);
                }
                g.Dispose();
                g = Graphics.FromImage(NewBmp);
                g.TranslateTransform(0, h);
                float[] PointY = Getycoordinate(MaxCoordinate);              //画Y轴坐标
                Font font = new Font("Arial", 9, FontStyle.Italic);
                Pen pn = new Pen(Color.Red);
                float m = w / 20, s = h / 10;
                for (int j = 0; j < 11; j++)
                {
                    //g.DrawString(Convert.ToString(ysign[j]), font, pn.Brush, m, -s);
                    g.DrawString(Convert.ToString(PointY[j]), font, pn.Brush, m, -s);
                    s += h * 8 / 100.0f;

                }
                int[] PointX = Getxcoordinate(PointNum);
                float x = w / 10, y = h / 20;
                for (int k = 0; k < 11; k++)
                {
                    g.DrawString(Convert.ToString(PointX[k]), font, pn.Brush, x, -y);
                    x += w * 8 / 100f;
                }  //drawstring是画的坐标值
                //g.DrawString(strEnd, font, Brushes.Red, _w * 17 / 20f, -_h / 20f);
                //g.DrawString(str, font, Brushes.Red, _w / 10f, -_h / 20f);
                g.Dispose();
                this.panelPicture.BackgroundImage = DrawCurve(panelPicture.Width, this.Size.Height); //将画布赋给panelpicture
阳光的雷咩咩
2013-12-17 · TA获得超过1.4万个赞
知道大有可为答主
回答量:2.3万
采纳率:66%
帮助的人:7771万
展开全部
下面的页面顶上有免费示例源码下载。
http://www.codeproject.com/Articles/22549/OpenS-CAD-a-simple-2D-CAD-application
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式