问题标签 [tbitmap]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1278 浏览

c++ - C++ builder 透明位图覆盖画布

OnPainta的情况下TForm,我想绘制不覆盖背景或其他绘制对象的位图,因为它们具有透明部分。

如果我在图像上绘制图像,它会起作用。

但是当我在 Form's 上绘图时Canvas,它不起作用:图像的白色部分应该是透明的,它用白色方形颜色覆盖了 Canvas 的其他对象。

更新

当我在 Image 上使用 绘图时MainForm->Images->Draw(Image->Canvas...),我得到一个透明的正方形,里面没有任何东西,我可以在其他组件上移动。

当我使用 绘图时MainForm->Images->GetBitmap(ImgIndex[HisType]+Rotation, Image),我在表单上得到了正确的拉伸图像,但没有透明胶片,即它的白色部分覆盖了其他组件。

虽然MainForm->Images->Draw(Canvas, X, Y, ImgIndex[HisType]+Rotation, dsTransparent, itImage);完成了这项工作,但我需要根据 Size 变量为这个组件拉伸它。

0 投票
1 回答
163 浏览

delphi - 调整 Tbitmap 大小时的白色图像

此代码应该调整 a 的大小TBitmap,但生成的位图只是一个白色图像(具有最终大小)。我正在使用它来调整大小。

知道发生了什么吗?

0 投票
2 回答
208 浏览

firemonkey - 如何使用 Image1.Bitmap.BitmapChanged;

Bitmap.BitmapChanged; 在 FMX.Graphics 中受到保护,因此我无法使用该程序。

使用 TImage 或 TImageControler 我正在画一条线,但该线没有显示。

我正在使用这个片段:

划清界线。IDE 找不到 BitmapChanged。

0 投票
1 回答
1157 浏览

delphi - 在 Delphi (VCL/Windows) 中更改之前清除 TBitmap

这是关于 Delphi、32 位和 Windows/VCL:

对于接受输入位图并使用给定格式(PixelFormat:pf8Bit 带有灰度调色板)写入输出位图的过程,我使用以下代码:

输出位图在传递到此过程时可能不是空的,但可能包含任何格式的任何内容。它将在程序中被完全覆盖。

我想知道简单地更改它的 PixelFormat 是否会产生一些开销(例如将旧内容转换为新的像素格式),所以我应该先以某种方式清除它,例如通过调用 _outBmp.SetSize(0, 0) 或任何其他方式?如果是,最有效的方法是什么?

编辑:

我只是用这段代码做了一些计时:

我电脑上的结果(并不慢):5.331 [s] vs. 0.322 [s]

除非我犯了一个实现错误,否则这非常重要。诚然,这是一个相当大的位图,但即使使用更合理的 4096x4096 尺寸,我也会得到 0.693 与 0.040,如果多次执行此操作(实际上是几百万次),这仍然很重要。

这以明确的“是”回答了是否存在性能影响的问题。

剩下的问题是: SetSize(0,0) 是清除位图的最有效方法还是有更好的方法?

编辑2:

TBitmap.Assign(nil) 是另一种清除位图的方法:

时序类似于 .SetSize(0, 0)。

0 投票
0 回答
249 浏览

delphi - Delphi 将 Direct3D 渲染到位图而不是屏幕

我是 Delphi direct3D 的新手。终于有一些基本的框架启动并运行在屏幕上渲染 2 个三角形。作品。但是我希望它现在呈现到 Tbitmap。经过2天的搜索,我没有在网上找到任何示例..也许这里有人可以提供帮助。

在这里您可以找到“概念证明”代码。(消除了所有错误检查等。)

在“d3dDevice.Present(nil, nil, 0, nil);”我想将结果转储到一个名为“frame”的位图中

好奇是否有人对此有一些工作代码!

格兹弗雷德

0 投票
1 回答
337 浏览

delphi - 如何将 TBitmap 分配给 TPath.Data

我想从 TBitmap 填充 TPath.Data。

Delphi FMX 在位图画布上提供 FillPath:- http://docwiki.embarcadero.com/CodeExamples/Rio/en/FMXTCanvasFillFunctions_(Delphi)

Image1.Bitmap.Canvas.FillPath(路径, 200);

但我正在寻找从位图中填充路径数据。

任何代码示例?蒂亚

0 投票
1 回答
114 浏览

delphi - 如何通过 ScanLine 复制灰度位图

我想将像素从 BMP1 复制到 BMP2,但复制的图像有乱码。为什么?

注:输入图像为pf8bit;

对于保存的图像,图形编辑器会显示“像素深度/颜色:索引,256 调色板”。

0 投票
0 回答
61 浏览

delphi - FMX 中 vcl DrawEdge 的等价物

我正在尝试编写等效的 FMX UI 来替换 VCL。

DrawEdge这些功能在 FMX 跨平台中的等价物是什么?(或最接近的等价物,如果不能相同)

感谢您的任何意见。

平台:带 FMX 的 Delphi 10.4

0 投票
0 回答
30 浏览

android - Firemonkey - ListView 中的位图和内存问题

在 firemonkey 中,我在本地(win、IOS、Android)保存了一些 Jpeg 格式的位图并降低了质量和大小。这样 3 或 4 Mb 文件变成 100 或 200Kb

当我在运行时将这些文件重新加载到我插入 TListBoxItem 的 Trectangle 的 TBitmap 中时,占用的 RAM 很多,有时甚至 20 Mb。结果是,如果我必须在内存中的磁盘上上传总共 20 Mb 的 150 个文件,我发现自己占用了将近 600 Mb。有谁知道为什么以及如何减少内存占用?谢谢

0 投票
1 回答
92 浏览

delphi - 从资源加载时如何使 TBitmap 透明

我正在尝试从资源中加载 TBitmap,同时保持透明。即使启用了透明属性,它看起来仍然一样。

我试图做的事情: