我想使用TLMDShapeControl(用于绘制圆角背景)和TEdit控件(也可以是TComboBox或TDBEdit等)的TFrame组件.
之后,我将使用“添加到调色板”命令将其转换为可重用组件控件.
之后,我将使用“添加到调色板”命令将其转换为可重用组件控件.
问题在于我需要它的宽度灵活性,因为我有想法将Frame alClient和TEdit中的所有内容转换为5像素边距,以便用户可以看到圆角.
这是可怕的,因为我不能使用对齐并将组件设置在另一个顶部.现在我必须在每次使用它时复制和粘贴组件! : – (((
我唯一看到正确的方法是只使用带有alClient和5px边距的TEdit,没有TShape.相反,我可以使TFrame成为透明度的圆角,所以它不会看起来丑陋的不同的颜色或TImage.
但是我该如何做呢?
有人有任何代码示例吗?
解决方法
为了回答你的问题如何使圆角的框架可以尝试这样的事情,但是你会对结果不满意,因为这里使用的
CreateRoundRectRgn
没有抗锯齿.
type TFrame1 = class(TFrame) Edit1: TEdit; Button1: TButton; protected procedure SetBounds(ALeft,ATop,AWidth,AHeight: Integer); override; end; implementation procedure TFrame1.SetBounds(ALeft,AHeight: Integer); var Region: HRGN; begin inherited; Region := CreateRoundRectRgn(0,ClientWidth,ClientHeight,30,30); SetWindowRgn(Handle,Region,True); end;
更新:
由于GDI没有任何支持反渲染的功能,所以我在这里张贴了一个使用GDI的圆形矩形(只是一个纯圆填充的圆形矩形)的例子(因为这将需要GDI包装器from here
).
以下属性对于其使用很重要:
>颜色 – 是形状填充颜色(可以增强笔颜色,梯度等)
>半径 – 是用于绘制圆角的圆的半径(以像素为单位)
> AlphaValue – 是渲染的圆矩形的不透明度值(只是为了fun