【发布时间】:2015-08-05 11:50:33
【问题描述】:
我是 MFC 的新手,试图从头开始学习。
我正在尝试在 VS2012 - MFC 中创建一个基于小对话框的应用程序。
在对话框窗口上,我已经绘制了一个矩形(在 OnPaint 事件中),如下所示。
CPaintDC dc(this);
CRect background1(10,10,208,92);
dc.Rectangle(10,10,208,92);
然后我用一些颜色填充了免费。像这样。
CBrush brush1;
brush1.CreateSolidBrush(RGB(2,3,4));
dc.FillRect(background1,&brush1);
现在我想在矩形内连续绘制像素形式的波浪。
到目前为止,我所做的是,
bool top = false;
for(i=10,j=92;i<200 && j>10;)
{
pDC->SetPixel(i,j,NewColor);
Sleep(10);
if(!top)
j-=1;
else
j+=1;
if(j%4==0)
{
i+=1;
}
if(j==12)
top=true;
if(j==90)
top = false;
}
我只是在窗口上直接绘制像素,但在矩形所在的尺寸范围内。波在到达矩形的正确尺寸时停止。但我觉得那不是正确的做法。
我想在矩形内连续绘制波浪,就像当它到达右端时它应该向左移动并且应该是连续的。
在 MFC 中是否有任何适当的方法可以在矩形内(技术上在另一个对象内)绘制一些东西?
请帮帮我。
【问题讨论】:
-
很高兴看到你继续 ;-)。关于您的问题,我想指出 MFC(以及 MFC 所依赖的 Win32 API)的绘图功能相当有限。如果你想要更高级的东西,那么你最好看看像 Cairo (www.cairographics.org) 这样的库,它们有你需要的东西并且可以在 Win32 API 的“顶部”使用(即你从像 CDC 这样的对象获得的句柄等)
-
卡里奥?他可以轻松地使用 GDI+ 来满足他的大部分需求。
-
@Ribinson.. 我在 GDI 函数上搜索了很多以限制某些限制的绘图,但我没有找到。您能否分享一个示例或提及执行此工作的任何 GDI 功能?
标签: c++ visual-c++ mfc drawing