你是否可以使例如20%的透明度TMemo或其他vcl组件?像TButton或TEdit一样?
在搜索解决方案时,我找到了这个:
从这里开始,我想,如果我在表格上绘制图像(OnPaint),然后将AlphaBlend打开,我就可以实现这个效果,但是没有成功,当整个表格透明时,主要的需要效果没有实现,备忘录后面没有背景图片。
![enter image description here](https://istack.dev59.com/U3FPM.webp)
感谢关注。
我已经找到了解决方案,可以在带有图像背景的窗体上创建半透明窗体,然后在添加的窗体上添加备忘录并将其与客户端对齐。这不是最好的方法,但它可以正常工作:
![enter image description here](https://istack.dev59.com/ujRKx.webp)
procedure TForm1.Button1Click(Sender: TObject);
var
MM : TMyMemo; frm : TForm;
begin
frm := TForm.Create(Form1);
frm.BorderStyle := bsNone;
frm.AlphaBlend := true;
frm.AlphaBlendValue := 150;
frm.Left := Form1.Left + 90;
frm.Top := Form1.Top + 90;
frm.Width := 300;
frm.Height := 300;
frm.Position := poDesigned;
frm.Visible := true;
MM := TMyMemo.Create(frm);
MM.Parent := frm;
MM.BorderStyle := bsNone;
MM.ParentColor := False;
MM.Align := alClient;
MM.Color := clBlack;
MM.Font.Color := clWhite;
MM.Font.Name := 'Sylfaen';
MM.Font.Size := 11;
MM.Visible := True;
frme := True;
end;
但是还有另一个问题,当我点击备忘录时,背景窗体失去了焦点,当我将新窗体的父级设置为Form1时,上述问题得到解决,但透明效果消失了(窗口仍然透明,但可以透过背景窗口看到无可见的背景),我该如何解决这个问题?
.Handle: HWND
属性。也许您可以将其与Win32 GDI API一起使用,以强制TMemo进行Alpha混合。但是这可能会产生意想不到的副作用或兼容性要求。 - Arioch 'The