wxWidgets中不断重绘矩形的方法
来源:互联网 发布:java 包命名特殊符合 编辑:程序博客网 时间:2024/04/30 06:14
wxClientDC dc(tmpTmpstaticBitmap);wxPen pen(*wxBLACK, 1, wxDOT);dc.SetPen(pen);//以反逻辑函数绘制dc.SetLogicalFunction(wxINVERT);dc.DrawRectangle(tmpRect);//第一次绘制dc.DrawRectangle(tmpRect);//第二次绘制的时候擦除dc.SetLogicalFunction(wxCOPY);//恢复正常绘制的方法
鼠标拖动绘制矩形的方法:
1、鼠标在指定的区域中按下左键,记录下当前鼠标按下的位置;
2、捕捉鼠标移动的事件,只有当鼠标按下左键时并且Dragging时,如果上次有绘制的矩形先擦除,然后绘制当前要绘制的矩形,记录当前绘制的矩形的位置;
3、当鼠标左键弹起的时候,重新绘制擦除刚才的矩形,然后用实体矩形重新绘制
void StudyFrame::OnAllStaticBitmapLeftDown( wxMouseEvent& event ){if (tmpAllFlag == true) {startPointOnAllStaticBitmap = event.GetPosition();tmpAllIsLeftDown = true;}}void StudyFrame::OnAllStaticBitmapLeftUp( wxMouseEvent& event ){wxPoint pt(0, 0);if (tmpAllFlag == true && pt != oldEndPointOnAllStaticBitmap) {wxClientDC dc(tmpAllStaticBitmap);wxPen pen(*wxBLACK, 1, wxDOT);dc.SetPen(pen);//以反逻辑函数绘制dc.SetLogicalFunction(wxINVERT);wxPoint pt(0,0);if (pt != oldEndPointOnAllStaticBitmap) {//擦除上次绘制的矩形DrawRectangleLine(dc, startPointOnAllStaticBitmap, oldEndPointOnAllStaticBitmap);}dc.SetLogicalFunction(wxCOPY);//恢复正常绘制的方法wxRect rect(startPointOnAllStaticBitmap, oldEndPointOnAllStaticBitmap);wxPen newPen(*wxRED, 3, wxSOLID);dc.SetPen(newPen);wxBrush brush(wxColour(0, 0, 0), wxTRANSPARENT);dc.SetBrush(brush);dc.DrawRectangle(rect);}tmpAllFlag = false;tmpAllIsLeftDown = false;}void StudyFrame::OnAllStaticBitmapMotion( wxMouseEvent& event ){ if(event.Dragging() && tmpAllIsLeftDown){ wxPoint currentPoint(event.GetPosition()); wxClientDC dc(tmpAllStaticBitmap); wxPen pen(*wxBLACK, 1, wxDOT); dc.SetPen(pen); //以反逻辑函数绘制 dc.SetLogicalFunction(wxINVERT); wxPoint pt(0,0); if (pt != oldEndPointOnAllStaticBitmap) {//擦除上次绘制的矩形DrawRectangleLine(dc, startPointOnAllStaticBitmap, oldEndPointOnAllStaticBitmap); } DrawRectangleLine(dc, startPointOnAllStaticBitmap, currentPoint); dc.SetLogicalFunction(wxCOPY);//恢复正常绘制的方法 oldEndPointOnAllStaticBitmap = currentPoint; }}
- wxWidgets中不断重绘矩形的方法
- canvas 不断重绘的部分原因
- 在winform中绘制矩形的方法
- photoshop中给矩形做圆角的方法
- VC中画虚线矩形的方法
- VC中画虚线矩形的方法
- MFC中菜单栏的重绘方法
- Android中视图重绘的方法
- I-代码需要不断的重构
- 关闭不断重启的进程
- html实现一个不断滚动的虚线矩形
- 博弈论中不断学到的
- Delphi中矩形(TRect)对象相关的几个方法
- opencv中替换图片ROI矩形区域的方法
- 绘制和重绘,有效矩形和无效矩形
- OpenCV计算两个矩形的重合度
- wxWidgets在wince上的编译方法
- wxWidgets在wince上的编译方法
- 简单介绍C#中的标识符
- 为什么到今天还要坚持写博客
- iPhone开发之利用ModalViewController切换View
- Linux 查看网络信息,路由信息 与DNS信息的命令
- kvm环境创建虚拟机
- wxWidgets中不断重绘矩形的方法
- Linux 套接字编程中的 5 个隐患
- C#中76个关键字统计
- image load
- C/C++可变参数
- C++调用C函数
- 正则表达式顺口溜
- QTableWidget的用法总结
- Linux SD驱动分析