我刚开始使用MFC,请耐心等待)。 我已经写了(它主要是产生要诚实)一个简单的应用程序,它应该做的油漆琐事:要绘制的画线,rectangulars,椭圆形,改变物体的颜色等如何保存到MFC C++应用程序中的位图?
我需要保存了什么已经在屏幕上绘制成一个bmp文件。任何想法我怎么能做到这一点?
我不知道这是否相关,但我在屏幕上绘制对象而不使用任何CBitmaps或类似的东西。这里是负责绘图部分代码:
CPaintDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
Anchor.x=point.x;
Anchor.y=point.y;
OldPoint.x=Anchor.x;
OldPoint.y=Anchor.y;
if(pDoc->shapeCount>=MAX_SHAPES) return;
pDoc->shapeCount++;
if(bFreehand)
{
pDoc->m_shape[pDoc->shapeCount-1] = new Shape;
pDoc->m_shape[pDoc->shapeCount-1]->shape = ePoint;
}
if(bLine)
{
pDoc->m_shape[pDoc->shapeCount-1] = new CLine;
pDoc->m_shape[pDoc->shapeCount-1]->shape = eLine;
}
if(bRectangle)
{
pDoc->m_shape[pDoc->shapeCount-1] = new CRectangle;
pDoc->m_shape[pDoc->shapeCount-1]->shape = eRectangle;
}
if(bEllipse)
{
pDoc->m_shape[pDoc->shapeCount-1] = new CEllipse;
pDoc->m_shape[pDoc->shapeCount-1]->shape=eEllipse;
}
pDoc->m_shape[pDoc->shapeCount-1]->x=point.x;
pDoc->m_shape[pDoc->shapeCount-1]->y=point.y;
pDoc->m_shape[pDoc->shapeCount-1]->x2=point.x;
pDoc->m_shape[pDoc->shapeCount-1]->y2=point.y;
pDoc->m_shape[pDoc->shapeCount-1]->Pen=CurrentPen;
pDoc->m_shape[pDoc->shapeCount-1]->Brush=CurrentBrush;
bButtonDown=true;
SetCapture();
我发现这样做,但我不知道如何获取屏幕宽度和高度,以填补其在CreateBitmap参数的列表
CBitmap *bitmap;
bitmap.CreateBitmap(desktopW, desktopH, 1, 32, rgbData);
CImage image;
image.Attach(bitmap);
image.Save(_T("C:\\test.bmp"), Gdiplus::ImageFormatBMP);
谢谢回答。首先:我如何查询CWnd的宽度和高度。其次,有没有一种方法可以从* View.cpp文件中获取CDC设备上下文?我对MFC是消息处理而不是标准的'int main()'类型的东西有点困惑。 – Patryk 2011-06-13 06:35:47
如果你对首字母缩略词RTFM或它的含义不满意,那么你绝对应该使用更现代的技术!任何记得MFC的人都不在StackOverflow上回答有关它的娱乐问题。 :)如果你有一个CWnd并想从CWnd获得一个大小,你的管道是GetClientRect。 http://msdn.microsoft.com/en-us/library/hkzy4k3x(v=vs.71).aspx – HostileFork 2011-06-13 06:46:46
至于现在我看到,我suold肯定下次使用QT :(但现在我必须交出这个项目(即使没有完成)今天...和是啊... RTFM,但现在没有时间了,谢谢你的反应。 – Patryk 2011-06-13 18:41:06