From 243e8052c895c4cfb03c34217f4a6e24fcb8b665 Mon Sep 17 00:00:00 2001 From: Xi Xu Date: Thu, 12 Sep 2024 21:55:01 +0800 Subject: [PATCH] Update WindmillView.cpp --- Windmill/Windmill/WindmillView.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/Windmill/Windmill/WindmillView.cpp b/Windmill/Windmill/WindmillView.cpp index be8136a..80b4f4f 100644 --- a/Windmill/Windmill/WindmillView.cpp +++ b/Windmill/Windmill/WindmillView.cpp @@ -74,7 +74,7 @@ void CWindmillView::OnDraw(CDC *pDC) { NewBitmap.CreateCompatibleBitmap(pDC, rect.Width(), rect.Height()); pOldBitmap = memDC.SelectObject(&NewBitmap); - // 设置映射模式和视口 + // 设置内存设备上下文的映射模式和视口 memDC.SetMapMode(MM_ANISOTROPIC); memDC.SetWindowExt(rect.Width(), rect.Height()); memDC.SetViewportExt(rect.Width(), -rect.Height()); @@ -93,10 +93,10 @@ void CWindmillView::OnDraw(CDC *pDC) { int baseHeight = 400; int bias = 65; POINT pt[4]{ - { -baseWidthTop / 2, -bias }, - { baseWidthTop / 2, -bias }, - { baseWidthBottom / 2, -bias + baseHeight }, - { -baseWidthBottom / 2, -bias + baseHeight } + { -baseWidthTop / 2, bias }, + { baseWidthTop / 2, bias }, + { baseWidthBottom / 2, bias - baseHeight }, + { -baseWidthBottom / 2, bias - baseHeight } }; memDC.Polygon(pt, 4); @@ -159,8 +159,16 @@ void CWindmillView::OnDraw(CDC *pDC) { memDC.SelectObject(pOldPen); NewPen.DeleteObject(); + GetClientRect(&rect); + + // 设置屏幕设备上下文的映射模式和视口 + pDC->SetMapMode(MM_ANISOTROPIC); + pDC->SetWindowExt(rect.Width(), rect.Height()); + pDC->SetViewportExt(rect.Width(), -rect.Height()); + pDC->SetViewportOrg(rect.Width() / 2, rect.Height() / 2); + // 将内存设备上下文中的内容复制到屏幕设备上下文中 - pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, -rect.Width() / 2, -rect.Height() / 2, SRCCOPY); + pDC->BitBlt(-rect.Width() / 2, -rect.Height() / 2, rect.Width(), rect.Height(), &memDC, -rect.Width() / 2, -rect.Height() / 2, SRCCOPY); // 清理资源 memDC.SelectObject(pOldBitmap);