Memo 设置成透明 把字下的图片示出来 ( 积分: 100 )

  • 主题发起人 主题发起人 aiwl
  • 开始时间 开始时间
A

aiwl

Unregistered / Unconfirmed
GUEST, unregistred user!
Memo 设置成透明 把字下的图片示出来
或在Memo加属性怎么实面
或在图片上可以写字,(字数1000左右)
 
Memo 设置成透明 把字下的图片示出来
或在Memo加属性怎么实面
或在图片上可以写字,(字数1000左右)
 
如果想自己写那是个很有挑战性的工作,解决方法:
1、用directx实现, 工作量比下面的方法还大
2、自己写,不过并不是透明, 而是将下面的图片作为memo的背景画在memo上, 实现比较复杂,因为不能使用windows的edit control, 只有自己从底层重新写个memo, 自己处理所有键盘、鼠标操作(包括自己实现copy-paste, undo-redo等等), 另外要跟踪背景的变化(比如图片发生变化或者memo大小,位置发生改变等等), 做的话大概3个月到半年的工作量

所以去找第三方的edit控件吧
 
透明的Edit类控件我还没见过,我只知道DreamEditor可带背景图显示。
 
这问题有点意思,我出个主意,有空试试。能否获得MEMO的画布,然后利用它“画”出你要的图画呢?如果画出后对MEMO里的文件进行编辑,图片能否保持呢?研究……中……
 
找个控件吧
 
首先创建Edit时指定WS_EX_TRANSPARENT,
然后输出text时指定SetBKMode(dc,TRANSPARENT);
可以试试。
 
不用试的, 这个我早就研究过, 标准windows的edit control根本无法实现, 因为有焦点时它在画文字到屏幕前会自动设置brush的, 就算你先前画好了背景也会被擦掉, 如果你通过截获 WM_CTLCOLOREDIT 传给它一个透明的brush那么上次的文字就不会被擦掉而是和本次输出的文字叠加. 你可以想象一下在edit输入过程中在文本中间按del删掉一个字然后后面所有字都变成墨团的效果.
 
我试过了,太难,放弃了
 
//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;
 
如Another_eYes所说,没有必要,能显示,你在编辑就没有了
 
后退
顶部