绘图功能终于实现啦!

先展示一下简单的界面!哈哈!
存在的问题:
绘图时界面有轻微闪烁,实现方法:
在OnMouseMove()方法中:不断更新当前绘制的图元信息, 并调用Invalidate()方法重绘。
OnPaint方法中:遍历所有图元,重绘所有图元!
            Graphics g = e.Graphics;
            Region regChip = g.Clip;
            g.Clip = new Region(rect);
            g.Clear(this.BackColor);
            foreach (IShape drawobject in doc.drawObjectList)
            {
                if (rect.IntersectsWith(drawobject.Rect))
                {
                    drawobject.Draw(g);
                    if (drawobject.TrackerState == config.Module.Core.TrackerState.Selected
                        && this.CurrentOperator == Enum.Operator.Transfrom)//仅当编辑节点操作时显示图元热点
                    {
                        drawobject.DrawTracker(g);
                    }
                }
            }
 
MFCScroll 是一个 MFC(Microsoft Foundation Classes)类库中的一个类,用于实现窗口中绘图的滚动功能。而绘图缩放是一种对绘图对象进行缩小或放大的操作。下面是一个示例程序,演示了如何使用 MFCScroll 类实现绘图缩放功能。 首先,在 MFC 应用程序中创建一个窗口,可以使用 MFC 提供的窗口类(如 CFrameWnd)或自定义的窗口类。然后,在窗口类中添加一个 MFCScroll 对象,用于实现滚动功能。 在窗口类的 OnCreate 函数中,创建 MFCScroll 对象并设置相关属性,例如滚动条的范围、页面大小等。 接下来,在窗口类的 OnDraw 函数中绘制需要缩放的图形。可以使用 GDI+ 或其他绘图库来实现。 为了实现缩放功能,可以在窗口类中添加两个成员变量,用于存储当前的缩放比例和原始的绘图对象。当用户进行缩放操作时,更新当前的缩放比例,并重新计算绘图对象的大小和位置。 在窗口类的 OnSize 函数中,根据当前的缩放比例调整绘图对象的大小和位置,并更新 MFCScroll 对象的滚动条范围。 最后,在窗口类的 OnHScroll 和 OnVScroll 函数中,根据滚动条的位置和用户的操作,更新绘图对象的位置,并调用窗口的 Invalidate 函数,触发重新绘制。 需要注意的是,为了保持绘图的质量,在进行缩放操作时,可能需要使用插值算法对绘图进行平滑处理。 综上所述,通过使用 MFCScroll 类和相关的事件处理函数,可以实现绘图的缩放功能。用户可以通过滚动条或其他方式来缩放绘图对象,从而达到对绘图的大小进行调整的目的。在具体应用中,可以根据需要对缩放算法进行优化和定制,以满足不同的需求。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值