【关于GDI+绘制平滑的反走样线,刷新显示图像很卡!!!】 gdi+内存指针博客namespace 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 是这样的,gdi+相对gdi的绘图效果要好不少,但是效率却比gdi慢不少。我们在绘制复杂的图形时,也遇到gdi+函数执行比较卡的问题。 那怎么弄,用别的线条显示很不平滑,用GDI+很平滑但又卡了 会不会是你这些GetSafeHdc、SetSmoothMode浪费时间了,你可以试试在初始化就SetSmoothMode,然后后面就只需moveto lineto了,这样的话你要把Graphics graphics(hdc);设置为成员变量了,不能是局部变量释放资源:graphics.ReleaseHDC( hdc);DeleteDC(hdc); 感觉有点道理,不过怎么在,h中申明Graphics graphics(hdc);?试了半天都有问题 Graphics graphics( pDC->m_hDC ); Pen myPen(Color(255,0,0,0),1); graphics.SetSmoothingMode(SmoothingModeHighSpeed);//要速度不要质量 graphics.DrawLine(&myPen,0,0,50,200); graphics.SetSmoothingMode(SmoothingModeHighQuality);//高质量 graphics.DrawLine(&myPen, 50, 0 ,130,200);//还有一个参数SmoothingModeAntiAlias,估计是折中的意思。速度也要,质量也不能落下。可以这样,定义时Graphics *m_pGraphics;然后构造函数中:m_pGraphics = NULL;OnPaint中:if(m_pGraphics == NULL){ m_pGraphics = new Graphics(hdc); SetSmoothMode....}MoveTo..LineTo... 最后,加上资源释放,试试参数SmoothingModeAntiAlias SmoothingModeHighSpeed用起来感觉还不如MoveTo..LineTo...SmoothingModeAntiAlias用起来没有什么变化。if(m_pGraphics == NULL){ m_pGraphics = new Graphics(hdc); SetSmoothMode....?????这里是怎么破的Graphics.SetSmoothingMode()错误m_pGraphics .SetSmoothingMode()错误SetSmoothingMode()错误} if(m_pGraphics == NULL){ CWindowDC dc(this);//this为当前窗口指针 HDC hdc=dc.GetSafeHdc(); m_pGraphics = new Graphics(hdc); m_pGraphics->SetSmoothingMode(SmoothingModeHighQuality);//设置为平滑曲线}MoveTo...Line To...可破 if(m_pGraphics == NULL){ CWindowDC dc(this);//this为当前窗口指针 HDC hdc=dc.GetSafeHdc(); m_pGraphics = new Graphics(hdc); m_pGraphics->SetSmoothingMode(SmoothingModeHighQuality);//设置为平滑曲线}MoveTo...Line To...可破对额,指针应该用->可以运行了,不过结果不理想,没什么变化 java dll 动态库 捕获鍵盤事件 全局变量的问题 请教怎么判断在一个指定路径下是否存在某个相对路径(文件或文件夹)? 完成端口,总是自动跳出程序,没有任何错误提示。 如何获取并修改网卡IP地址? 关于字体问题 关于C/S的问题!!!!!! ## WinPcap和哪些防火墙可以一起使用? 字符型转换为整型??? 如何得到桌面的CWnd对象???? 如何使用PostMessage ()向编辑控件发送特殊字符 在VS2010中使用msChart控件时,添加一些头文件时出现问题 用OpenGL如何读取txt文档中的数据并画点
我们在绘制复杂的图形时,也遇到gdi+函数执行比较卡的问题。
释放资源:
graphics.ReleaseHDC( hdc);
DeleteDC(hdc);
感觉有点道理,不过怎么在,h中申明Graphics graphics(hdc);?试了半天都有问题
Graphics graphics( pDC->m_hDC );
Pen myPen(Color(255,0,0,0),1);
graphics.SetSmoothingMode(SmoothingModeHighSpeed);//要速度不要质量
graphics.DrawLine(&myPen,0,0,50,200); graphics.SetSmoothingMode(SmoothingModeHighQuality);//高质量
graphics.DrawLine(&myPen, 50, 0 ,130,200);//还有一个参数SmoothingModeAntiAlias,估计是折中的意思。速度也要,质量也不能落下。
可以这样,定义时Graphics *m_pGraphics;然后构造函数中:m_pGraphics = NULL;OnPaint中:if(m_pGraphics == NULL)
{
m_pGraphics = new Graphics(hdc);
SetSmoothMode....
}
MoveTo..
LineTo...
{
m_pGraphics = new Graphics(hdc);
SetSmoothMode....?????这里是怎么破的
Graphics.SetSmoothingMode()错误
m_pGraphics .SetSmoothingMode()错误
SetSmoothingMode()错误}
if(m_pGraphics == NULL)
{
CWindowDC dc(this);//this为当前窗口指针
HDC hdc=dc.GetSafeHdc();
m_pGraphics = new Graphics(hdc);
m_pGraphics->SetSmoothingMode(SmoothingModeHighQuality);//设置为平滑曲线
}
MoveTo...
Line To...可破
if(m_pGraphics == NULL)
{
CWindowDC dc(this);//this为当前窗口指针
HDC hdc=dc.GetSafeHdc();
m_pGraphics = new Graphics(hdc);
m_pGraphics->SetSmoothingMode(SmoothingModeHighQuality);//设置为平滑曲线
}
MoveTo...
Line To...可破
对额,指针应该用->
可以运行了,不过结果不理想,没什么变化