相关疑难解决方法(0)

寻找自定义图像网格

我正在尝试找到一个专门用于显示图像的网格.它也需要具有良好的性能,并且最好具有某种缩略图缓存.图像需要从文件加载,如果图像也可以动态分配,那将是很好的.它不应该在标准网格的列/行记录列表上工作,而是单个项目列表,每个项目代表一个图像.应该有一个属性可以同时为所有列和行定义列宽和行高,而不是一次定义一个.最终目标是列出具有用户选项的所有图像,以控制显示图像的大小.它将用作产品展示,因此需要某种自定义绘图功能,如OnDrawItem事件.这可能会在此列表中显示多达50,000个图像,因此TListView无法正常工作,因为它非常重要.

它需要使用Delphi 2010,XE2,最好是7.

以下是如何在下面显示8张图像的3个示例.我并不是说每个图像的大小不同,但大小完全相同.没有2列可以具有不同的宽度,并且与行相同.

在此输入图像描述

delphi grid image delphi-7 delphi-xe2

10
推荐指数
1
解决办法
8946
查看次数

在Delphi中缩放画布区域

我在Delphi中制作看起来像Paint的东西.我找到了如何制作缩放功能:

procedure SetCanvasZoomFactor(Canvas: TCanvas; AZoomFactor: Integer);
var
  i: Integer;
begin
  if AZoomFactor = 100 then
    SetMapMode(Canvas.Handle, MM_TEXT)
  else
  begin
    SetMapMode(Canvas.Handle, MM_ISOTROPIC);
    SetWindowExtEx(Canvas.Handle, AZoomFactor, AZoomFactor, nil);
    SetViewportExtEx(Canvas.Handle, 100, 100, nil);
  end;
end;



procedure TMainForm.btnZoomPlusClick(Sender: TObject);
var
  bitmap: TBitmap;
begin 

  bitmap := TBitmap.Create;
  if(zoomVal < 1000) then
      zoomVal:=zoomVal+zoomConst; //zoomVal = 100 by default; zoomConst = 150;
  try
    bitmap.Assign(MainForm.imgMain.Picture.Bitmap);
    SetCanvasZoomFactor(bitmap.Canvas, zoomVal);
    Canvas.Draw(MainForm.imgMain.Left,MainForm.imgMain.Top, bitmap); 
  finally
    bitmap.Free
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是,问题是 - 它仅缩放图像的左上区域.

缩放前的示例: 在此输入图像描述 放大后: 在此输入图像描述

我希望能够在缩放后移动所有图片区域.我该怎么做?

delphi canvas delphi-7 zooming mousemove

9
推荐指数
1
解决办法
6112
查看次数

在Delphi中实现EaseIn,EaseOut函数

我正在尝试在TChromeTabs中实现标签的流畅运动.我可以在这里看到缓动公式,但我不是数学家,也不知道如何将其转换为代码.到目前为止,我的尝试让我无处可去.

是否有可用的Easing功能的Delphi实现?

delphi animation easing-functions delphi-xe2 easing

6
推荐指数
1
解决办法
883
查看次数

TScrollbox MouseDown覆盖

我创建了一个自定义滚动框派生自TScrollbox,它的工作方式相同,只是当它在滚动条的客户区域中拖动时会滚动.

我现在的问题是,当我的CustomScrollbox中的按钮或面板上有鼠标时,我无法拖动滚动.

MouseDown,MouseUp,MouseMove覆盖不会触发,因为它会悬停在不同的控件中.

当我开始拖动时,如何跟踪MouseDown,MouseUp,MouseMove并阻止按钮/面板事件触发(在我的CustomScrollbox内)?

这是我平滑的CustomScrollbox的视频

delphi custom-scrolling smooth-scrolling tscrollbox

5
推荐指数
1
解决办法
3179
查看次数