首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

基础有关问题:VS2010 C++中应用GDI+异常提示

2013-01-23 
基础问题:VS2010 C++中应用GDI+错误提示//已经在stdafx.h文件中 增加了GDI头文件的引用// 引入GDI+ 头文件

基础问题:VS2010 C++中应用GDI+错误提示

//已经在stdafx.h文件中 增加了GDI头文件的引用
// 引入GDI+ 头文件

#include "GdiPlus.h"
// 与GDI+ 相关的其它头文件,如:GraphicsPath类所在的头文件
#include "GdiplusBase.h"
#include "GdiPlusPath.h"


using namespace Gdiplus;
//导入GDI+的lib文件
#pragma comment(lib,"Gdiplus.lib")


//绘制简单的对象
void CTmpAView::OnDraw(CDC*   pDC )
{
Cvs10Tmp1221ADoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;


Graphics g(pDC->m_hDC);
GraphicsPath path;
path.AddRectangle(Rect(40,100,200,50));
g.DrawPath(&Pen(Color.Red),&path);


}

//错误2error C2275: “Gdiplus::Color”: 将此类型用作表达式非法
//错误3error C2228: “.Red”的左边必须有类/结构/联合
是什么问题导致。????


[解决办法]
g.DrawPath(&Pen(Color.Red),&path);
改成:
g.DrawPath(&Pen(RGB(128,0,0)),&path);
你上面的语句Color.Red应该是C#里类
[解决办法]
g.DrawPath(&Pen(Color.Red),&path);
这里的Color.Red语法错了,改成这样:Color::Red.
不过你这里还没有初始化GDI+,即使你这段代码可以,你将会发现还是绘制不出来你想看到的效果。
解决办法:
需要在InitInstance()函数中调用:
GdiplusStartupInput gdiplusStartupInput;
GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
m_gdiplusToken为ULONG_PTR类型的成员变量用于卸载时调用

ExitInstance()函数中调用
GdiplusShutdown(m_gdiplusToken);
[解决办法]
VS2010比VC6语法要严格的多!VC6有很多代码都可以编译通过,都能运行的,但是在VS2005下都不能,一模一样的代码!所以建议你直接换了之后试试不就行了!
[解决办法]
color 又不是类变量, 可以用点?
路过
[解决办法]
Color::Red
无语,前面人都说了啊
[解决办法]
Color::Red

热点排行