注册 登录
编程论坛 C# 论坛

请问我的程序怎么增加连续线功能

shing110 发布于 2014-04-27 12:41, 931 次点击
只有本站会员才能查看附件,请 登录


求救。。。。11

[ 本帖最后由 shing110 于 2014-4-27 12:45 编辑 ]
7 回复
#2
xydddaxia2014-04-28 09:46
只有本站会员才能查看附件,请 登录

只有本站会员才能查看附件,请 登录

这个意思?
#3
shing1102014-04-28 13:04
回复 2 楼 xydddaxia
是的,但是好像有问题耶~,如果选择连续线,对应的画线的类型和填充类型  失效了

[ 本帖最后由 shing110 于 2014-4-28 13:32 编辑 ]
#4
xydddaxia2014-04-28 17:28
回复 3 楼 shing110
嗯,没有加填充效果,自己弄下嘛,前面你都写过了
#5
shing1102014-04-28 19:54
回复 4 楼 xydddaxia
弄成这样了,怎么样在case "lianxu"  加代码判断画笔类型和填充的类型呢


只有本站会员才能查看附件,请 登录


[ 本帖最后由 shing110 于 2014-4-28 21:43 编辑 ]
#6
xydddaxia2014-04-29 08:51
只有本站会员才能查看附件,请 登录
#7
shing1102014-04-30 16:41
回复 6 楼 xydddaxia
private void cut_Click(object sender, EventArgs e)   //剪切功能
        {

            Clipboard.SetDataObject(pictureBox1.Image, true);
            pictureBox1.Image = null;

        }


        private void Paste_Click(object sender, EventArgs e)   //粘贴功能
        {
            //从剪贴板获取数据
            IDataObject idata = Clipboard.GetDataObject();
            //判断数据类型
            if (idata.GetDataPresent(DataFormats.Bitmap))
                //图像显示到图像框中
                pictureBox1.Image =
                    (Bitmap)idata.GetData(DataFormats.Bitmap);

        }

我增加了一个剪切和黏贴功能,为啥不行呢。。。没效果
#8
xydddaxia2014-05-05 09:15
回复 7 楼 shing110
因为你是在控件上直接绘图,要是控件自身触发了重绘事件的话,控件看上去就还原了,控件怎么显示是由控件决定的,窗口最小化后还原,其他窗口遮挡后又移开等等,控件都会重绘,重绘的时候不会执行那些后来附加上去的画的那些,除非重写控件的OnPaint方法。
解决办法就是在PictureBox的Image对象上画图,而不是在PictureBox上画图

Drawshape(pictureBox1.CreateGraphics(),pStart, pEnd, brushmode, Mypen, dmode);

改成

if (this.pictureBox1.Image == null)
{
   Bitmap bmp = new Bitmap(this.pictureBox1.Width,this.pictureBox1.Height);
   this.pictureBox1.Image = bmp;
}
Drawshape(Graphics.FromImage(this.pictureBox1.Image), pStart, pEnd, brushmode, Mypen, dmode);

[ 本帖最后由 xydddaxia 于 2014-5-5 09:16 编辑 ]
1