首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >德尔菲graphics32删除选定层

德尔菲graphics32删除选定层
EN

Stack Overflow用户
提问于 2015-01-17 05:32:13
回答 1查看 379关注 0票数 3

graphics32是一个非常好的库,但是我很难找到正确使用它的方法。例如,层,它们是一个很棒的特性。

  • 我可以向一个ImageView添加层,选择它们,移动它们,调整它们的大小,但是,如果我想删除它们,我不知道怎么做。
  • 此外,该层被选中,但我不能捕获他们的任何关键事件。我的意思是我想用键盘上的箭头移动图层,但我不能。

有人知道如何解决这些问题吗?

请帮忙谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-18 10:08:50

捕获箭头键的关键是允许这样做。为此,您需要调整基础TCustomPaintBox32类的公共(但不是已发布)属性。

有点像

代码语言:javascript
复制
ImgView.Options := ImgView.Options + [pboWantArrowKeys];

应该允许TImgView32类(此处命名为ImgView )捕获箭头键。

一旦启用,您就可以编写键盘处理程序如下:

代码语言:javascript
复制
procedure TMainForm.ImgViewKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Location: TFloatRect;
begin
  if Assigned(FSelection) then
    case Key of
      VK_LEFT:
        FSelection.Location := OffsetRect(FSelection.Location, -1, 0);
...

其中,OffsetRect通过向左/右和顶部/底部添加三角洲(第2和第3参数)来调整TFloatRect。

在上面的示例中,FSelection是当前选中的层。它是在选择图层后存储的(用鼠标单击)。此外,您还可能需要调整橡皮筋的位置,以防止您使用TRubberBandLayer作为选择器。

增编:

OffsetRect的实现:

代码语言:javascript
复制
function OffsetRect(const Rct: TFloatRect; const DeltaX, DeltaY: TFloat): TFloatRect;
begin
  Result.TopLeft := OffsetPoint(Rct.TopLeft, DeltaX, DeltaY);
  Result.BottomRight := OffsetPoint(Rct.BottomRight, DeltaX, DeltaY);
end;

或者,您可以直接使用这样的代码:

代码语言:javascript
复制
procedure TMainForm.ImgViewKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  Location: TFloatRect;
begin
  if Assigned(FSelection) then
    case Key of
      VK_LEFT:
        FSelection.Location := FloatRect(FSelection.Location.Left - 1, FSelection.Location.Top, FSelection.Location.Right - 1, FSelection.Location.Bottom);
...

但看起来有点丑。

增编2:

对于库的旧版本(例如1.9.x),可能也缺少OffsetPoint函数。这项工作的实施情况如下:

代码语言:javascript
复制
function OffsetPoint(const Pt: TFloatPoint; DeltaX, DeltaY: TFloat): TFloatPoint;
begin
  Result.X := Pt.X + DeltaX;
  Result.Y := Pt.Y + DeltaY;
end;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27996499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档