关于图形处理
在BCB的TImage组件中可以用TCanvas类的TextOut向图形中写入字符串,但字符串无法透明,用API的TextOut函数还需要HDC,用GetDC只能取得窗口的HDC。TCanvas的HDC为空,我应该怎么办? 问题点数:40、回复次数:18Top
1 楼APIer(APIer)回复于 2001-03-11 17:06:00 得分 5
其实TCanvas->Handle就是窗口的HDC,不用再去GetDC了,这就是VCL的方便之处,如果调用API的TextOut它的HDC参数可以用TCanvas->Handle去填充Top
2 楼luhongjun(过江项羽)回复于 2001-03-11 17:35:00 得分 0
TCanvas->Handle它不是真正的HDC,就如向Form上写时不能直接使用Form->Handle而要使用GetDC(Form->Handle)取得窗口的HDC一样。不信你可以试一试。谢谢。Top
3 楼APIer(APIer)回复于 2001-03-11 23:43:00 得分 0
不会吧,你看看TCanvas的定义阿,HDC Handle,如果我没有记错的话,把TCanvas->Handle作为hdc参数我曾经这样用过的,Top
4 楼luhongjun(过江项羽)回复于 2001-03-12 18:36:00 得分 0
我开始就这样用过语句如下:TextOut(DriverImage->Canvas->Handle,20,30,"我的照片",8);但是在TImage上什么也写不上,但也不提示错误。
然后我把语句改成TextOut(GetDC(DriverImage->Canvas->Handle),20,30,"我的照片",8);h还是不行,没办法我跟踪GetDC(DriverImage->Canvas->Handle)的值为空。现在我用了一个笨办法把图象读到Form上,再往Form上写字,最后再把图象区域截下来写入TImage中,实在太那个了...,希望高手给予支持,谢谢了。
感谢APIer的回答,为什么我的帖子很少有人回答,我可每次问题都给大家分了。
Top
5 楼luhongjun(过江项羽)回复于 2001-03-13 12:59:00 得分 0
希望大家给出解答。Top
6 楼luhongjun(过江项羽)回复于 2001-03-13 16:15:00 得分 0
希望大家给出解答。为什么没人回答?Top
7 楼holyfire(谁最衰啊你最衰,谁最帅啊我最帅)回复于 2001-03-13 16:41:00 得分 5
TextOut( Image1->Canvas->Handle , 10 , 10 , "tet" , 3 );
我试过了,可以的。Top
8 楼holyfire(谁最衰啊你最衰,谁最帅啊我最帅)回复于 2001-03-13 17:03:00 得分 0
有一个问题,就是加载了图片后,就不能写了。Top
9 楼storyxlx(风笛)回复于 2001-03-13 17:57:00 得分 0
Form->Handle是HWND句柄,Canvas->Handle是HDC句柄.
你的DriverImage是什么?Top
10 楼luhongjun(过江项羽)回复于 2001-03-13 18:03:00 得分 0
DriverImage是TImageTop
11 楼luhongjun(过江项羽)回复于 2001-03-13 18:53:00 得分 0
我又试了一次,还是不好使,我DriverImage内有图象,如果没有图象就好使。这一点holyfire(圣火)说的对,但没有图象我做它有何意义。
Top
12 楼APIer(APIer)回复于 2001-03-13 21:00:00 得分 0
你画的顺序对不对?Top
13 楼Winsky(bcb_user@sina.com)回复于 2001-03-14 05:55:00 得分 0
检查一下你的Canvas->Pen->Color什么的是否设置正确?Top
14 楼holyfire(谁最衰啊你最衰,谁最帅啊我最帅)回复于 2001-03-14 08:59:00 得分 0
我想可以在DriverImage上加一个Label,将其设成透明的不就行了。Top
15 楼storyxlx(风笛)回复于 2001-03-14 12:07:00 得分 0
Canvas->Width和Canvas->Height有没有设定?Top
16 楼AutoAsm(风流总被雨打风吹去)回复于 2001-03-14 13:29:00 得分 0
holyfire(圣火)的做法可行,我就是这样做的。Top
17 楼babysloth(小懒虫虫)回复于 2001-03-14 14:45:00 得分 0
2 luhongjun(过江项羽),把代码放在OnPaint事件里试试。Top
18 楼langhost(总线)回复于 2001-03-15 01:23:00 得分 30
Tcanvas->Brush->Mode=??就是设定文字是否背景为透明的,具体设的值忘了,不过你可以试试。Brush是图形中填充色用的,所以将其模式设成“无”就OK了。记得给分呀!不然的话……我也没辙。Top




