问个简单的问题:
CDC
CPaintDC
CBitmap
这些是干什么的,有什么连带关系吗
我画图,是把图像画到哪了,(是不是CDC上?),然后我怎样将画的图放到我指定的控件(比如:静态文本框)上啊
我不知道我是否说明白了,感觉自己都没说明白,不过还是希望大家帮帮我啊
问题点数:100、回复次数:7Top
1 楼AlbortEinstein(爱因斯坦)回复于 2006-03-02 11:08:18 得分 40
CPaintDC 是继承自CDC
如果定义了CDC的对象
CDC dcMem;
必须创建出来
dcMem.CreateCompatibleDC(NULL);
然后创建CBitmap对象
CBitmap bmp;
bmp.CreateCompatibleBitmap(NULL, 0, 0);
把bmp选进DC,方可使用DC
dcMem.SelectObject(&bmp);
现在才可以使用DC去画Top
2 楼syy64(太平洋)回复于 2006-03-02 11:14:36 得分 20
CDC
CPaintDC
是绘图的类;
CBitmap
是处理位图的类。
Top
3 楼happygirl_05()回复于 2006-03-02 11:14:53 得分 0
CPaintDC 是继承自CDC
如果定义了CDC的对象
CDC dcMem;
必须创建出来
dcMem.CreateCompatibleDC(NULL);
然后创建CBitmap对象
CBitmap bmp;
bmp.CreateCompatibleBitmap(NULL, 0, 0);
把bmp选进DC,方可使用DC
dcMem.SelectObject(&bmp);
现在才可以使用DC去画
------------------------------------------------------------------------------------
谢谢你
那么用DC去画,去画到哪了(是bmp吗)?
然后我想将图形显示在指定的控件上,应该怎么做?
Top
4 楼ouyh12345(五岭散人)回复于 2006-03-02 11:23:21 得分 0
画在dc的客户区
在指定的控件上画:重载控件,然后在DrowItem上画Top
5 楼ydfivy(我就是一送外卖的)回复于 2006-03-02 11:33:01 得分 30
如果你想画在CStatic控件上.可以用ouyh12345() 的方法.
然后在DrawItem这样做.
void C3dTextButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your code to draw the specified item
CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
ASSERT_VALID(pDC);
CRect rectClient=lpDrawItemStruct->rcItem;
然后使用你得到的DC画图就可以了.
例如:
pDC->TextOut(...);
}
Top
6 楼YufengShi(浪子)回复于 2006-03-02 11:34:15 得分 10
dc是和窗口关联的,
用dc画图,
就会在关联的窗口上反映出来。Top
7 楼happygirl_05()回复于 2006-03-02 11:44:46 得分 0
如果你想画在CStatic控件上.可以用ouyh12345() 的方法.
然后在DrawItem这样做.
void C3dTextButton::DrawItem(LPDRAWITEMSTRUCT lpDrawItemStruct)
{
// TODO: Add your code to draw the specified item
CDC* pDC=CDC::FromHandle(lpDrawItemStruct->hDC);
ASSERT_VALID(pDC);
CRect rectClient=lpDrawItemStruct->rcItem;
然后使用你得到的DC画图就可以了.
例如:
pDC->TextOut(...);
}
-----------------------------------------------------------------------------------
不应该用Bitblt()函数吗?
我看书上介绍,平移图形,好像可以用这个,但我没太看懂,不知道要平移到控件上,应该怎么做?
(我目前的思路是这个,没有考虑DrawItem(),要是用DrawItem()我恐怕还得从看相关知识)Top




