我用一个画图函数绘制了一幅位图,然后将位图选入画刷,
然后用这个画刷填充一个区域,填充完后放大图形,
然后拖动滚动条滑块,发现用画刷填充的区域与区域上的图形的位置不是相对固定的,
也就是图形移动而背景就像固定在那儿,不随图形一起移动。
我想让背景随背景上的图形一起移动,也就是图形和背景的位置是相对固定的,
这个问题怎样解决?
(我设置过画刷的原点SetBrushOrg,但解决不了)
请指教!
谢谢!
在视图中传入包含画刷填充多边形区域的点数组,调用FillRegion这个类的Draw函数填充多边形区域 void FillRegion::Draw( CDC *pDC, CPoint ptRgn[], int iSize, CPoint ptBrushOrg)//ptRgn是包含多边形点的数组
//iSize是数组的大小
//ptBrushOrg是设定的画刷的原点坐标
{
CBitmap *lpBmp = NULL;
lpBmp = GetPatternBitmap( pDC );//取得要选入画刷的位图
if(lpBmp == NULL)
return; pDC->SelectStockObject(NULL_PEN);
CBrush br,*lpOldbr;
br.CreatePatternBrush(lpBmp);
lpOldbr = pDC->SelectObject(&br); pDC->SetBrushOrg(ptBrushOrg);
pDC->Polygon(ptRgn, iSize);//填充多边形,ptRgn是包含多边形点的数组
pDC->SelectObject(lpOldbr);
br.DeleteObject();
delete lpBmp;
} CBitmap * FillRegion::GetPatternBitmap(CDC *pDC)
{
CRect rectBmp = CRect(0,0,100,19);//自定义一个区域作为位图的绘图区域
rectBmp.NormalizeRect();
CBitmap * bmp = new CBitmap();
bmp->CreateCompatibleBitmap(pDC,rectBmp.Width(), rectBmp.Height());
CBitmap * oldBmp = pDC->SelectObject(bmp);
pDC->DPtoLP(rectBmp); DrawBmpLithology( pDC, rectBmp );//这是特定的绘制位图的函数 pDC->SelectObject(oldBmp);
return bmp;
}
然后用这个画刷填充一个区域,填充完后放大图形,
然后拖动滚动条滑块,发现用画刷填充的区域与区域上的图形的位置不是相对固定的,
也就是图形移动而背景就像固定在那儿,不随图形一起移动。
我想让背景随背景上的图形一起移动,也就是图形和背景的位置是相对固定的,
这个问题怎样解决?
(我设置过画刷的原点SetBrushOrg,但解决不了)
请指教!
谢谢!
在视图中传入包含画刷填充多边形区域的点数组,调用FillRegion这个类的Draw函数填充多边形区域 void FillRegion::Draw( CDC *pDC, CPoint ptRgn[], int iSize, CPoint ptBrushOrg)//ptRgn是包含多边形点的数组
//iSize是数组的大小
//ptBrushOrg是设定的画刷的原点坐标
{
CBitmap *lpBmp = NULL;
lpBmp = GetPatternBitmap( pDC );//取得要选入画刷的位图
if(lpBmp == NULL)
return; pDC->SelectStockObject(NULL_PEN);
CBrush br,*lpOldbr;
br.CreatePatternBrush(lpBmp);
lpOldbr = pDC->SelectObject(&br); pDC->SetBrushOrg(ptBrushOrg);
pDC->Polygon(ptRgn, iSize);//填充多边形,ptRgn是包含多边形点的数组
pDC->SelectObject(lpOldbr);
br.DeleteObject();
delete lpBmp;
} CBitmap * FillRegion::GetPatternBitmap(CDC *pDC)
{
CRect rectBmp = CRect(0,0,100,19);//自定义一个区域作为位图的绘图区域
rectBmp.NormalizeRect();
CBitmap * bmp = new CBitmap();
bmp->CreateCompatibleBitmap(pDC,rectBmp.Width(), rectBmp.Height());
CBitmap * oldBmp = pDC->SelectObject(bmp);
pDC->DPtoLP(rectBmp); DrawBmpLithology( pDC, rectBmp );//这是特定的绘制位图的函数 pDC->SelectObject(oldBmp);
return bmp;
}
解决方案 »
- 推荐几个经典的VC/MFC简单入门教程
- 请教!如何修改vc工具条按键中的文字颜色
- 我用ATL做控件,后来想用多线程来做后台处理,请问如何加入多线程啊?
- 请问哪里有做中国象棋的字体?
- 关于QQ占用端口的问题.
- 对话框拆分窗口,如何让其中一个获得焦点?
- 如何截获Win2000,XP登录窗口的用户名和密码?
- 如何实现停靠菜单.
- 怎样在动态创建一个CEdit后(名为m_edit),立刻取出它的有关字体的信息并放入一个LOGFONG变量中?
- ****为什么***关于在VC调用atl的简单问题。。。
- ioctlsocket()进行非阻塞接收数据包的过程中,偶然会出现数据在接受端阻塞10秒左右
- AfxBeginThread创建的线程如何释放??
m_Scale = (double)m_dev/96.0;
if(m_bodyctrl->m_factor == 1.0f)//m_factor是放大倍数
pDC->SetBrushOrg(point.x%8, point.y%8);
else if(m_Scale!=1.0||m_bodyctrl->m_factor != 1.0f)
pDC->SetBrushOrg(point.x, point.y);