问题标签 [timage]

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 回答
724 浏览

delphi - TImage 可以处理 32bpp JPG 图像吗?

出于某种原因,当我在设计时加载 JPG 图像时,图像显示为带有垂直条的灰度图像,让人联想到电视扫描线。并且图像尺寸不正确。图像为 500x364 32 bpp,预览精美。

TImage 在颜色深度方面有限制吗?

0 投票
3 回答
4907 浏览

delphi - 如何测试 TImage 是否分配有图形?

在我的程序中,表单上有一个 TImage 组件。

在某些情况下,程序必须测试:

如果“有一个图像分配给 TImage 组件的图片属性”,那么......

我怎样才能做到这一点?

0 投票
2 回答
1685 浏览

delphi - TImage丢失加载图片

运行 Turbo Delphi Pro。

我正在使用 TImage 来显示 png 图像。

当我重启Delphi并加载dpr文件时,TImage还在,但是图片丢失了,需要在编译前重新加载图片。

一开始我以为是路径问题,于是从dpr所在目录加载了图片,但是没有用。

我还能尝试什么?

0 投票
1 回答
17057 浏览

delphi - 使用delphi缩放图像

我正在与德尔福合作。我有 TImage,我为其分配了一个位图。

imgmain 是 TImage 的对象, bmpMain 是 TBitmap 的对象

我想放大我的图像。我的表单上有一个轨迹栏,当我点击轨迹栏时,图像应该会放大。我该怎么办?
谢谢你。

编辑:
我在这里找到了一些解决方案它有效,但它削减了我的形象。

0 投票
3 回答
3360 浏览

delphi - TImage 和 TScrollBox 的问题

我正在与德尔福合作。
我有一个滚动框,我在其中放置 TImage 控件。现在我想缩放渲染到 TImage 控件中的图像。所以,我使用的是 TCanvas 的 stretchDraw 方法。我的代码是 -

它正在正确缩放图像,我的问题是我希望滚动框的大小也应该随着图像的缩放而改变。
Also explain me parameters of Canvas.StretchDraw method. I am little confused with it.
谢谢你。

0 投票
2 回答
1653 浏览

delphi - 使用 ImageMap 提取图像 (PNG) 并在 TImage 上显示

我正在努力实现以下目标:

假设一个大的 png(透明背景 16000 x 70px),其中包含 50 个不同的其他 png 文件...我需要加载该 png 并从中提取单个 png(最好是例如具有我可以通过 coords 说的一种功能(左,上,高,宽)我想提取哪个png...提取的png应该显示在一个timage中然后...

当然,我可以使用 Gif 图像并重新创建动画,但出于某种原因我需要 png ......

一个想法是将其加载到图像列表中,但失败了,因为所有 50 个 png 的尺寸均为 (320x70px) timagelist 仅支持 256px 宽度...

我的下一个想法是也许我可以做类似的事情:

将 Png 加载到 TBitmapArray 中。好吧,提取工作非常好,但副作用是所有都失去了 alphachannel,没有什么是透明的,而是我得到一个胖黑色边框:-(

也许有人知道如何在不失去透明度的情况下做到这一点......非常感谢任何帮助,但如果没有第 3 方组件可能会很好......至少 Gr32 也可以

最诚挚的问候,
s!

0 投票
3 回答
784 浏览

delphi - Delphi 7 笔记本电脑上的 Timage 透明胶片

我想做什么

我正在尝试将多个图形绘制到 Timage,我绘制的这些图形由带有 Foodfills 和线条的有序层组成。我使用多个缓冲区来确保排序和双缓冲。

我在做什么

我期待什么

我希望看到每个图像对象相互叠加,每个图像层都是该层的完整图像。我的例子是一个机器人,后面有一面旗帜。首先绘制旗帜,然后绘制机器人。

我得到了什么(在电脑上)

在个人电脑上,我得到了我所期望的,一切似乎都是正确的。

我得到了什么(在笔记本电脑上)

在几乎每台笔记本电脑和一些个人电脑上,我只看到机器人。我加入了一些陈述,看看它是否正在绘制标志,并且确实如此。游戏甚至可以以正确的方式与旗帜互动。进一步的调查表明,它只显示了我的“drawscene”绘制的最后一张图像,并且当图像被直接绘制到整个画布上时,一切都出现了(由于填充层重叠的原因,这不能完成)

我认为正在发生的事情

所以我推断出 Timage 的 Timage.transparent 属性不起作用或在某些机器上的计算方式不同..

我做了一个测试来证明这一点,并将画布变成红色。然后到那个画布,我在 0,0 i Timage 处绘制,属性为 transparent=true,红色画布中间只有一个点。结果是一张中间有一个点的白色画布。

我假设并且发现表明具有非常基本图形驱动程序的机器似乎将 null 或透明视为白色,而更强大的机器似乎将 null 或透明视为透明。

由于 Timage.Transparent 属性为真,这似乎有点失败。

编辑:更新!!!似乎在 ATI 显卡上,如果颜色为“null”,则它会以 PF24bit 格式解释,因此没有 alpha 通道和透明度。

在 Nvidia 卡上,它将它作为 PF32bit 并将 null 视为透明。

解决这个问题的明显方法是将位图类型设置为 PF32bit,但这仍然行不通。然后我假设这可能还不够,我应该确保背景设置为透明而不是保留为空..但是 Timage 内没有工具(我可以看到)来设置带有 alpha 的颜色。所有画布绘图功能都需要一个 RGB 24 位的 Tcolor,而只有一个 RGBA 32 位的 TcolorRef 就可以了....有没有用 alpha 0 绘制的方法?

我认为我需要知道的

如何强制透明属性在所有机器上工作,或者让笔记本电脑不透明粘贴为白色的方法,或者实现相同结果的方法。

任何人有任何解决方案或想法?

0 投票
2 回答
2403 浏览

delphi - 如何在 TcustomContol 中使用 Picture.LoadFromFile()

我创建了一个从 TcustomControl 派生的 TSkinPanel

它有一个 FGraphic: TPicture。

FGraphic 绘制在 TSkinPanel 的画布上,如果您从 TObject Inspector 加载和图像,则可以正常工作。

但我不会在运行时加载图像“Form1.SkinPanel1.Picture.LoadFromFile('skin.bmp');

0 投票
2 回答
1819 浏览

delphi - Delphi 6:如何使用具有 Alpha 通道的 TextOut 创建位图?

我将描述我的总体目标,以防我提出的问题不是获得我正在寻找的答案的最佳形式。我有一个围绕 X 轴旋转的词球或“词球”。随着单词向后旋转(Z 坐标从 -1 到 1,从前到后),我打算更改每个单词的大小和不透明度,以便“前面”中的单词是 100% 不透明和全尺寸的,而单词背面较小且有些透明。我宁愿使用直接的 Delphi 代码来执行此操作,并避免使用 Direct3D 等。我已经让旋转代码工作正常。我只需要实现我的基于 Z 坐标的感知着色想法。

当我创建单词球时,我会为每个单词动态创建一个 TImage 组件。我使用 TCanvas.TextOut() 方法以居中的方式将单词“打印”到 TImage 位图。我打算使用 BitBlt 将该位图复制到包含单词球的主 Canvas 中的正确位置,因为 BitBlt 速度很快并且可以即时调整位图的大小,满足我的感知着色操作的要求之一。

但我不知道促进 Alpha 混合的最佳方法。我知道 Windows 有 AlphaBlend() 调用,而且使用起来相当简单。但我需要知道如何创建一个位图,它是具有 alpha 通道的每字 TImage 组件的副本。请注意,在我的情况下,整个位图将具有统一的 alpha 通道值,因为我希望根据 Z 坐标将不透明度统一应用于整个单词。

使用 TCanvas.TextOut() 制作的位图动态创建的 TImage 组件是否具有 Alpha 通道?如果没有,我如何创建一个,或者实时创建一个 TImage 位图的副本,该位图确实有一个要传递给 AlphaBlend() 调用的 Alpha 通道?如果有更好的方法来完成这一切,请告诉我。

0 投票
1 回答
2726 浏览

delphi - Delphi 6:如何通过 TextOut() 方法显示大尺寸高质量文本?

我有一个 TImage 组件,我使用 TCanvas.TextOut() 打印一个文本字符串。我将 TImage 的高度和宽度设置为大尺寸,如 50 像素 X (TextWidth) 像素,并将 Canvas 字体高度设置为稍小一些,如 48 像素。然后我将 TImage 的位图 BitBlt() 放到主 Canvas 上。我在屏幕上看到的是又大又细的字母,它们非常锯齿状。我想要的是看起来很光滑的粗大字母。使用 TImage/BitBlt 组合的原因是因为我需要动态调整文本的大小和 alpha 混合。

对我来说,将大而平滑的字母打印到我的 TImage 位图的最简单方法是什么?