【发布时间】:2015-06-28 20:54:53
【问题描述】:
每个人 我一直在尝试在 Delphi 中解决以下问题。 我想拍一张照片并只制作一个抗锯齿圆角。 我知道如何使用 RoundRect 使所有 4 个角都变圆。但是,我似乎不知道如何制作一个。 我一直在尝试解决这样的问题:
procedure RoundCorner(var image: TBitmap; w,h : integer);
//w - width of an image
//h - height of an image
//radius can be set at 150 (rounded rect radius)
// image is the timage object received as var parameter
var
i, j :integer;
x, y :double;
begin
i:= w - Trunc(radius);
x:= 0;
y:= radius - sqrt(sqr(radius) - sqr(x));
while(i < w) do
begin
j:=0;
while(j <= y) do
begin
image.Canvas.Pixels[i-1,j]:=clWhite; //a colour of your choosing or just erase this line
j := j + 1;
end;
y:= radius - sqrt(sqr(radius) - sqr(x));
x := x + 1;
i := i + 1;
end;
end;
这可行,但是我面临两个问题:
- 角没有抗锯齿
- 我想用不同的颜色填充剪切区域
欢迎提出任何建议 谢谢。
【问题讨论】:
-
你说你知道如何用RoundRect把四个角都弄圆。你为什么不简单地让roundRect 比你的图像大并移动它的位置,以便只有它的一个角放在你的图像上方?
-
我不明白这个问题。您发布了一些描述模糊的不完整代码。您能否edit the question 并发布一个最小的、可编译的代码,我们可以复制并在我们的 IDE 中运行以查看问题,好吗?还可以选择显示您描述的问题的图像(它可能只是指向上传图像的链接;我们可以为您嵌入)。
-
@SilverWarrior:我认为这也切断了边界。可能不是他或她想要的。
-
@TLama:但我愿意。只有一个角应该是圆形的。其他人应该是直的。该代码是绘制四分之一圆的相当简单的尝试。问题是:如何通过锯齿获得像这样的部分圆角矩形。
-
@Rudy,好吧,答案是,忘记 GDI(如果你想保持简单的话)。