MFC 如何让用鼠标画出的图不相连
时间: 2024-04-29 11:23:32 浏览: 11
可以通过设置画笔的样式来实现让用鼠标画出的图不相连。具体操作如下:
1. 在绘图区域设置画笔样式为 PS_DOT。
```cpp
CPen pen(PS_DOT, 1, RGB(0, 0, 0));
pDC->SelectObject(&pen);
```
2. 在绘图区域使用 MoveTo 函数将画笔移动到鼠标位置,然后使用 LineTo 函数画出线段。
```cpp
// 鼠标移动事件
void CMyView::OnMouseMove(UINT nFlags, CPoint point)
{
if (nFlags & MK_LBUTTON) {
CDC* pDC = GetDC();
CPen pen(PS_DOT, 1, RGB(0, 0, 0));
pDC->SelectObject(&pen);
pDC->MoveTo(m_lastPoint);
pDC->LineTo(point);
ReleaseDC(pDC);
m_lastPoint = point;
}
CView::OnMouseMove(nFlags, point);
}
```
通过上述操作,即可实现用鼠标画出的图像不相连。
相关问题
MFC 如何让鼠标抬起点和按下点不相连
要实现鼠标抬起点和按下点不相连的效果,可以使用MFC的鼠标事件处理函数,例如OnLButtonDown()和OnLButtonUp()。
在OnLButtonDown()函数中,记录下当前鼠标按下的点的坐标,例如:
```
void CMyView::OnLButtonDown(UINT nFlags, CPoint point)
{
m_ptMouseDown = point; // 记录下鼠标按下的点的坐标
CView::OnLButtonDown(nFlags, point);
}
```
在OnLButtonUp()函数中,判断当前鼠标抬起的点和按下的点是否重合,如果重合则不执行任何操作,如果不重合则处理相应的逻辑,例如:
```
void CMyView::OnLButtonUp(UINT nFlags, CPoint point)
{
if (point == m_ptMouseDown) // 如果鼠标抬起的点和按下的点重合,则不执行任何操作
{
CView::OnLButtonUp(nFlags, point);
return;
}
// 处理相应的逻辑,例如画线、移动对象等
...
CView::OnLButtonUp(nFlags, point);
}
```
通过这种方式,就可以实现鼠标抬起点和按下点不相连的效果。
VC6.0中用MFC实现用鼠标画椭圆,可以改变大小
你可以按照以下步骤来实现用鼠标画椭圆并改变大小的功能:
1. 在你的 MFC 应用程序中创建一个新的对话框或视图类。
2. 在对话框或视图类中添加一个成员变量,用于存储椭圆的位置和大小信息。例如,可以使用 CRect 类型的变量。
3. 在对话框或视图类中实现 OnMouseMove、OnLButtonDown 和 OnLButtonUp 函数,用于处理鼠标移动和单击事件。在 OnLButtonDown 函数中记录鼠标点击时的坐标,并在 OnMouseMove 函数中计算椭圆的位置和大小信息,并重绘椭圆。在 OnLButtonUp 函数中完成椭圆的绘制。
4. 在对话框或视图类的 OnPaint 函数中实现椭圆的绘制。可以使用 CDC 类的 Ellipse 函数来绘制椭圆。
5. 可以在对话框或视图类的 OnSize 函数中重新计算椭圆的位置和大小信息,并重绘椭圆,以实现改变大小的功能。
注意:为了使椭圆能够正确地绘制和重绘,需要在对话框或视图类中使用双缓冲技术。可以使用 CDC 类的 CreateCompatibleDC 和 CreateCompatibleBitmap 函数创建一个和屏幕大小相同的内存 DC 和位图,并在 OnPaint 函数中使用双缓冲技术来绘制椭圆。
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)