delphi – 如何使TFrame与圆角?

前端之家收集整理的这篇文章主要介绍了delphi – 如何使TFrame与圆角?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想使用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

猜你在找的Delphi相关文章