求助关于VC++图形学,窗口重绘怎么解决

weixin_44004318 weixin_44004318 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
// 形状View.cpp : implementation of the CMyView class // #include "stdafx.h" #include "形状.h" #include "形状Doc.h" #include "形状View.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CMyView IMPLEMENT_DYNCREATE(CMyView, CView) BEGIN_MESSAGE_MAP(CMyView, CView) //{{AFX_MSG_MAP(CMyView) ON_COMMAND(ID_CIRCLE, OnCircle) ON_COMMAND(ID_HAND, OnHand) ON_COMMAND(ID_RECT, OnRect) ON_WM_LBUTTONDOWN() ON_WM_LBUTTONUP() ON_WM_MOUSEMOVE() //}}AFX_MSG_MAP // Standard printing commands ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint) ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview) END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CMyView construction/destruction CMyView::CMyView() { // TODO: add construction code here m_hand=m_circle=m_rect=false; } CMyView::~CMyView() { } BOOL CMyView::PreCreateWindow(CREATESTRUCT& cs) { // TODO: Modify the Window class or styles here by modifying // the CREATESTRUCT cs return CView::PreCreateWindow(cs); } ///////////////////////////////////////////////////////////////////////////// // CMyView drawing void CMyView::OnDraw(CDC* pDC) { CMyDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); // TODO: add draw code for native data here } ///////////////////////////////////////////////////////////////////////////// // CMyView printing BOOL CMyView::OnPreparePrinting(CPrintInfo* pInfo) { // default preparation return DoPreparePrinting(pInfo); } void CMyView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add extra initialization before printing } void CMyView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/) { // TODO: add cleanup after printing } ///////////////////////////////////////////////////////////////////////////// // CMyView diagnostics #ifdef _DEBUG void CMyView::AssertValid() const { CView::AssertValid(); } void CMyView::Dump(CDumpContext& dc) const { CView::Dump(dc); } CMyDoc* CMyView::GetDocument() // non-debug version is inline { ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CMyDoc))); return (CMyDoc*)m_pDocument; } #endif //_DEBUG ///////////////////////////////////////////////////////////////////////////// // CMyView message handlers void CMyView::OnCircle() { // TODO: Add your command handler code here m_circle=true; m_rect=m_hand=false; } void CMyView::OnHand() { // TODO: Add your command handler code here m_hand=true; m_circle=m_rect=false; } void CMyView::OnRect() { // TODO: Add your command handler code here m_rect=true; m_circle=m_hand=false; } void CMyView::OnLButtonDown(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default if(m_hand) { spt=point; } if(m_circle||m_rect) { SetCapture(); spt=point; ept=point; } CView::OnLButtonDown(nFlags, point); } void CMyView::OnLButtonUp(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default ReleaseCapture(); CView::OnLButtonUp(nFlags, point); } void CMyView::OnMouseMove(UINT nFlags, CPoint point) { // TODO: Add your message handler code here and/or call default CDC *pDC=GetDC(); if(m_hand&&(nFlags&&MK_LBUTTON)) { pDC->MoveTo(spt); pDC->LineTo(point); spt=point; } if(m_rect&&(nFlags&&MK_LBUTTON)) { CGdiObject *old=pDC->SelectStockObject(NULL_BRUSH); int drawmode=pDC->GetROP2();//保存原有的绘图模式 pDC->SetROP2(R2_NOTCOPYPEN);//设置新的绘图模式 pDC->Rectangle(ept.x,ept.y,spt.x,spt.y); pDC->SetROP2(drawmode); pDC->Rectangle(spt.x,spt.y,point.x,point.y); pDC->SelectObject(old); ept=point; } if(m_circle&&(nFlags&&MK_LBUTTON)) { CGdiObject *old=pDC->SelectStockObject(NULL_BRUSH); int drawmode=pDC->GetROP2();//保存原有的绘图模式 pDC->SetROP2(R2_NOTCOPYPEN);//设置新的绘图模式 pDC->Ellipse(ept.x,ept.y,spt.x,spt.y); pDC->SetROP2(drawmode); pDC->Ellipse(spt.x,spt.y,point.x,point.y); pDC->SelectObject(old); ept=point; } CView::OnMouseMove(nFlags, point); }
...全文

相关推荐

VC++计算机图形学制作二维图形变换代码

初始化OpenGL上下文:在VC++中,首先需要创建一个OpenGL窗口,设置上下文,并确保所有必要的回调函数已经注册。2.

九-龙

VC++环境下自绘雷达图的完整实现

雷达图,又称蜘蛛图或星形图,是一种多变量数据可视化技术,用于显示多维数据在单一图表中的关系。它通过从中心点绘制多个轴,每个轴代表一个变量,轴上的刻度表示变量的值,从而形成一个多边形区域。该图形特别适用于展示数据间的相对大小,以及个体与整体之间的比例关系。GDI(图形设备接口)是Windows操作系统中用于处理图形输出的软件组件。GDI允许应用程序生成和操作图形信息而不必关心硬件细节。

元楼

深入探索计算机图形学:VC++实验课程

本文还有配套的精品资源,点击获取 简介:计算机图形学是研究计算机图像生成、处理和显示的学科,广泛应用于多个领域。本课程实验侧重于基本图形绘制算法的学习与实现,包括DDA直线算法、中点画线算法和Bresenham画线算法。学生将通过C++编程实践,学习算法原理,增强对图形学的理解,并提升编程技巧。实验涵盖了图形窗口创建、颜色设置、点和线绘制等基础技能,并为学生进一步研究复杂图...

Kiki-2189

实现MFC金刚石图案算法的图形学课程设计

图形学作为计算机科学的一个重要分支,涉及计算机图形图像的生成、处理与显示。从基本的点、线、面元素绘制到复杂的3D渲染与动画技术,图形学为模拟现实世界提供了基础。在本章中,我们将深入了解图形学的基本概念、发展历程以及在不同领域的应用,为读者打下坚实的理论基础。MFC(Microsoft Foundation Classes)是微软公司提供的一套用于开发Windows应用程序的C++类库。MFC封装了Windows API,使得开发者可以更加方便地在Windows平台上创建丰富的图形用户界面。

携程邮轮

vc++画图板(计算机图形学)

在这个项目中,“vc++画图板(计算机图形学)”是一个基于Microsoft Visual C++(简称VC++)编写的简易画图应用程序,旨在帮助用户理解和实践计算机图形学的基本概念和技术。

sb04040810
评论 2
收藏 已收藏
分享
返回顶部
weixin_44004318
界面 15,976 成员 115,866 内容