h文件:
Bitmap *Image;//全局指针CPP文件:构造函数中
Image=new Bitmap(640,480); //初始化
CPP文件:my******View::OnDraw(CDC * pDC)函数中my******Doc * pDoc= GetDocument();
ASSERT_VALID(pDoc);
----------
----
--Graphics bmp(Image);//把打开的位图作为画布
bmp.SetSmoothingMode(SmoothingModeAntiAlias);//乃门懂的CObList *list=pDoc->m_coblist);//打开链表
POSITION pos =list->GetHeadPosition(); //抽出头 while(pos)
{CShape* shape=(CShape*)list->GetNext(pos); //取出画图的记录if(shape->info==1)
{
bmp.DrawLine(&pen, shape->Start.x, shape->Start.y, shape->End.x, shape->End.y);
}
Graphics g(pDC->GetSafeHdc()); //画到屏幕上的画布
g.DrawImage(Image,0,0);}而且画上去的线用反色滤镜完全没效果,位图倒是变了以上是反色前以上是反色后
在openfile(打开文件对话框)这里我是这样写的
void CxxxxxxxxxxxView::OnFileOpen()
{
........
.....
..
PicPath=dlg.GetPathName();
Image=Bitmap::FromFile(PicPath.AllocSysString());
//从打开的文件中构造一个位图对象,Image是全局变量指针
这样处理不对么?总之抗锯齿就这样失去效果了,虽然之后画上去的一开始是有抗锯齿,但是慢慢的就又有锯齿了。
有人说我每次刷新OnDraw都从头到位取出内容,导致反复重绘的问题,但我不知道只画一次的判断方法。你知道吗?
我希望自己画的线能够被反色滤镜处理。
Image=new Bitmap(640,480); //初始化
初始化之后这个位图加载到graphics里是抗锯齿的,我就奇怪为什么加载位图后就不行了,还有保存后也不抗锯齿
我的思路很简单,就是打开图片,在图片上绘画(最好保留抗锯齿),然后把这个加工过的位图保存成新位图
滤镜处理也是居于Bitmap *Image;这个加载了位图的指针的,不过画上去的线完全不被滤镜的代码处理,只有位图本身被处理(反色)。