gpt4 book ai didi

delphi - 如何在自定义 TGraphicControl 上拉伸(stretch)并排绘制两个图形?

转载 作者:行者123 更新时间:2023-12-03 15:42:50 26 4
gpt4 key购买 nike

我正在编写我的 Delphi TGraphicControl 绘制程序。

我创建一个 Canvas 并将其拉伸(stretch)到图形区域上。效果很好。

然后,我在图形区域上使用另一个 Stretchdraw 重复此操作,但它是在第一个 Stretchdraw 的区域中绘制的,而不是按照我指示的那样绘制在图形区域上的。

有没有办法可以在 TGraphicControl 的 Canvas 中将两个拉伸(stretch)绘图并排放置?

最佳答案

TCanvas.StretchDraw将图形绘制到 Canvas 上给定的矩形区域中。矩形应该但不一定位于 Canvas 的边界内。 Canvas 的所有者决定这些边界。就您而言,听起来 Canvas 所有者是 TGraphicControl 对象。

如果您希望两个图形彼此相邻绘制,则用于绘制第一个图形的 TRect 应表示与您的 TRect 相邻的矩形用于第二个图形。您尚未显示任何代码,因此很难判断出了什么问题。

如果您对 StretchDraw 的两次调用使用相同的 TRect 变量,那么您需要确保修改矩形在调用 — 首先更改 Left 属性。

例如:

var
r: TRect;
begin
r := ClientRect;
// First rectangle takes up left half of control
r.Right := r.Right div 2;
Canvas.StretchDraw(r, graphic1);

// Shift the rectangle to the right half
r.Left := r.Right;
r.Right := ClientRect.Right;
Canvas.StretchDraw(r, graphic2);
end;

关于delphi - 如何在自定义 TGraphicControl 上拉伸(stretch)并排绘制两个图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/467403/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com