A aiwl Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-28 #1 Memo 设置成透明 把字下的图片示出来 或在Memo加属性怎么实面 或在图片上可以写字,(字数1000左右)
A aiwl Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-28 #2 Memo 设置成透明 把字下的图片示出来 或在Memo加属性怎么实面 或在图片上可以写字,(字数1000左右)
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-28 #3 如果想自己写那是个很有挑战性的工作,解决方法: 1、用directx实现, 工作量比下面的方法还大 2、自己写,不过并不是透明, 而是将下面的图片作为memo的背景画在memo上, 实现比较复杂,因为不能使用windows的edit control, 只有自己从底层重新写个memo, 自己处理所有键盘、鼠标操作(包括自己实现copy-paste, undo-redo等等), 另外要跟踪背景的变化(比如图片发生变化或者memo大小,位置发生改变等等), 做的话大概3个月到半年的工作量 所以去找第三方的edit控件吧
如果想自己写那是个很有挑战性的工作,解决方法: 1、用directx实现, 工作量比下面的方法还大 2、自己写,不过并不是透明, 而是将下面的图片作为memo的背景画在memo上, 实现比较复杂,因为不能使用windows的edit control, 只有自己从底层重新写个memo, 自己处理所有键盘、鼠标操作(包括自己实现copy-paste, undo-redo等等), 另外要跟踪背景的变化(比如图片发生变化或者memo大小,位置发生改变等等), 做的话大概3个月到半年的工作量 所以去找第三方的edit控件吧
D dreamisx Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-28 #4 透明的Edit类控件我还没见过,我只知道DreamEditor可带背景图显示。
S solo_1978 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-29 #5 这问题有点意思,我出个主意,有空试试。能否获得MEMO的画布,然后利用它“画”出你要的图画呢?如果画出后对MEMO里的文件进行编辑,图片能否保持呢?研究……中……
江 江南草 Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-29 #7 首先创建Edit时指定WS_EX_TRANSPARENT, 然后输出text时指定SetBKMode(dc,TRANSPARENT); 可以试试。
A Another_eYes Unregistered / Unconfirmed GUEST, unregistred user! 2005-06-29 #8 不用试的, 这个我早就研究过, 标准windows的edit control根本无法实现, 因为有焦点时它在画文字到屏幕前会自动设置brush的, 就算你先前画好了背景也会被擦掉, 如果你通过截获 WM_CTLCOLOREDIT 传给它一个透明的brush那么上次的文字就不会被擦掉而是和本次输出的文字叠加. 你可以想象一下在edit输入过程中在文本中间按del删掉一个字然后后面所有字都变成墨团的效果.
不用试的, 这个我早就研究过, 标准windows的edit control根本无法实现, 因为有焦点时它在画文字到屏幕前会自动设置brush的, 就算你先前画好了背景也会被擦掉, 如果你通过截获 WM_CTLCOLOREDIT 传给它一个透明的brush那么上次的文字就不会被擦掉而是和本次输出的文字叠加. 你可以想象一下在edit输入过程中在文本中间按del删掉一个字然后后面所有字都变成墨团的效果.
J jfyes Unregistered / Unconfirmed GUEST, unregistred user! 2005-07-17 #10 //Created: 2005-01-26 //Author: jfyes //Function: 绘画TWinControl组件的图形 //Example WinControlDrawImage(Memo1, Image1.Picture.Graphic) procedure TTaiShing.WinControlDrawImage(WinControl: TWinControl; Graphic: TGraphic); var // 最少的代码绘画TWinControl组件的图形 MCanvas: TControlCanvas; begin MCanvas := TControlCanvas.Create; try MCanvas.Control := WinControl; MCanvas.StretchDraw(MCanvas.ClipRect, Graphic); finally MCanvas.Free; end; end;
//Created: 2005-01-26 //Author: jfyes //Function: 绘画TWinControl组件的图形 //Example WinControlDrawImage(Memo1, Image1.Picture.Graphic) procedure TTaiShing.WinControlDrawImage(WinControl: TWinControl; Graphic: TGraphic); var // 最少的代码绘画TWinControl组件的图形 MCanvas: TControlCanvas; begin MCanvas := TControlCanvas.Create; try MCanvas.Control := WinControl; MCanvas.StretchDraw(MCanvas.ClipRect, Graphic); finally MCanvas.Free; end; end;
J jfyes Unregistered / Unconfirmed GUEST, unregistred user! 2005-07-17 #11 如Another_eYes所说,没有必要,能显示,你在编辑就没有了