- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Delphi 2006 的 TImage 不太支持 PNG。为了在我的表单上显示具有 alpha 透明度的图像,我必须在运行时加载它们。我可以在设计时加载它们,但它们无法保存,我想是因为 PNG 没有保存在 DFM 文件中。我确信在最新的 Delphi 中这一切都很顺利,但我现在无法升级。
无论如何,我在运行时加载它们:
Image1.Picture.Assign (PngImageCollection1.Items [0].PNGImage) ;
PNGImageCollection 组件保存了我所有不同大小的 PNG(这些是在设计时创建和加载的),我将它们分配给 FormCreate 事件中的相应 TImage。
这一直工作正常,直到我遇到了一个问题,即我试图在表单上使用这些图像后在其他地方重用它。我发现分配 TPicture 的行为已将其设置为空图像作为分配的结果。这是在例程 TPicture.ForceType 中发生的,AFAICT 检查 FGraphic 的类型,如果不是所需的类型,则释放 FGraphic 并创建请求类型的新实例。
好的。因此,经过一番摸索之后,我发现也许我真的应该这样做:
Image1.Picture.Bitmap.Assign (PngImageCollection1.Items [0].PNGImage) ;
这成功了,因为分配没有破坏图像,但图像现在显示为不透明的半透明位,即:
而不是:
如何让该图像正确显示 alpha 透明位? (补充问题:Image1.Picture.Bitmap.Assign 是正确的方法吗?)。
这是更详细的代码:
在我遇到“重用”TImage 问题的代码中,顺序是:
在表单创建时:
LogoImage.Picture.Assign (PngImageCollection1.Items [0].PNGImage) ;
(PNGIMage是公司标志,LogoImage1在主窗体上)。
打印报告标题:
procedure PrintLogo (Report : TBaseReport) ;
var
X1, Y1, LogoHeightMM : Double ;
begin
with Report do
begin
LogoHeightMM := CalcGraphicHeight (LogoWidthMM, MainForm.LogoImage.Picture.Graphic) ;
X1 := PageWidth - MarginRight - LogoWidthMM ;
Y1 := SectionBottom - LogoHeightMM ;
PrintBitmapRect (X1, Y1, X1 + LogoWidthMM, Y1 + LogoHeightMM, MainForm.LogoImage.Picture.Bitmap) ;
end ;
end ;
第一次调用打印 Logo 的例程时,它执行时没有错误,但在调用 PrintBitmapRect 后,LogoImage .Picture 被清除。下次调用打印头例程时,对 CalcGraphicHeight 的调用将失败,因为图像的宽度和高度为零。
将 Picture.Assign 更改为 Picture.Bitmap.Assign 修复了标题打印例程中的 RTE,但是当我将相同的“修复”移植到从 PNG 分配的其他静态图像(如上面的齿轮)时,我丢失了 aplha channel 。
最佳答案
您没有显示代码中真正相关的部分:您如何重用图像以使其具有特定类型。
当您将 TImage 分配给 TPngObject 时,图像的图形将保存一个 png 对象。只有当您专门请求位图时,它才会强制其图形为位图类型。比如说这个,
Bmp.Assign(Image1.Picture.Bitmap);
将强制Image1有一个位图图形,如果它的图形是一个png对象,它将被释放。在此期间,
Bmp.Assign(Image1.Picture.Graphic);
不会强制 Image1 具有位图图形,png 对象将执行分配并保留在那里。
Delphi 的位图(至少到最新版本)不支持 alpha channel ,因此您不应该将 Image1.Picture.Bitmap.Assign(..
) 用于部分透明的图像。
顺便说一句,您可以使用 png 图像集合中的图像作为源,而不是重复使用图像中的图形。
关于德尔福2006 : Run-time assignment of PNG to TImage loses alpha transparency,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5372586/
我想要一个具有透明背景的图表,因此 PNG 似乎是一个不错的选择。但是当我设置透明背景时,轴标签的质量急剧下降。我该如何解决?请参阅以下代码。就目前而言,图表具有透明背景,正如我所希望的,但文本质量很
我正在尝试制作一个透明的谷歌图表,但它似乎不起作用。它只是绘制纯白色背景。 有没有人在透明度方面取得成功? 难道我做错了什么? 提前致谢! 谷歌图表信息:solid fill 测试网址: Google
我有一个 subview 已添加到我的 UIView 中。这个想法是 subview 是一个带有 uibuttons 的悬停面板。 subview 的 alpha 值为 0.2,因为用户需要能够看到其
如何在不影响表单控件的情况下更改表单的 alphablend? 德尔福XE7 最佳答案 此问题的一个解决方案是使用多设备应用程序(如果无法使用VCL)。 如果您需要保留透明的TForm,只需更改属性T
嗨,我正在用 mvc4 做我的元素。在我的布局页面中,我有一个透明的 div(#wrapper),最重要的是我有许多非透明的 div。为此,我使用了以下 css 和 html 代码。
我有黑色和透明的简单图像,想将其更改为白色和透明。我想保持透明度(80% 黑色和 20% 透明 >> 80% 白色和 20% 透明,30% 黑色和......)。我尝试了填充桶,但没有成功。 据我所知
我有一组位图。它们在某种程度上都是透明的,我事先不知道哪些部分是透明的。我想从排除透明部分但在正方形中的原始位图中创建一个新位图。我认为这张图片解释了这一点: 我知道如何从现有位图中创建位图,但我不知
我整个下午都在尝试第一次使用 expo-cli 运行 expo build:ios,这样我就可以将我的第一个 expo 应用程序放到 TestFlight 上,但我反复收到错误消息:“你的应用程序图标
我想知道为什么在 Mac OS X 上的滚动条有时是白色透明的,有时是黑色透明的,如果您在常规设置中将“显示滚动条”设置为“滚动时”。所有浏览器(Safari、Chrome、Firefox、Opera
这个问题在这里已经有了答案: Difference between "-webkit-text-fill-color" and "color"? (2 个答案) 关闭 4 年前。
我想为我的应用程序开发一个配置文件屏幕。我正在使用 AppCompactActivity,因为我需要我的应用程序也支持非 Lollipop 设备。我只需要为应用程序中的这个特定 Activity 屏幕
第一个场景: h1{ text-align: center; } td{ width: 100px; height: 100px; border-right: 1px solid gray; bord
我在 Google Earth Engine 中工作,正在尝试创建一种无颜色/完全透明的颜色(无边框和无填充)。下面是一行代码,其中第一种颜色应该是透明的“颜色”。基本上我希望我的最小值根本不显示在
我在HTML5 Canvas 上玩createRadialGradient()。除非我要实现(半)透明性,否则它的工作原理就像一种魅力。 我做了这个jsFiddle以使事情更清晰:http://jsf
我需要从 www.webwoods.co.uk/lsss/index.html(黑色和红色的星星)的网站图标中删除白色背景 有没有办法用常用的图形编辑器(Adobe CC、Paint 等)来做到这一点
我需要使用透明度(背景每隔几秒钟更改一次)找到图像(检测游戏中的文本)。我的脚本: #include HotKeySet("s", "Start") $x = 0 $y = 0 Func Start
环境:WebGL,Chrome。将透明png用作模型的纹理时,我有以下行为: 图片A-树将建筑物隐藏在其后,我看到了世界框纹理。它还隐藏自身(后分支不可见) 同时-图片B-正常运行,窗口是透明的,我看
我正在尝试将水印渲染到视频中。一旦水印的图像文件 (.png) 包含透明度,图像就不再渲染到视频中。如果我将该图像转换为 .jpg 然后再转换回 .png,效果很好。如果我创建一个没有透明度的新 pn
我正在使用tilemill来生成mbtile。有人知道如何使mbtiles背景透明吗? 最佳答案 您的默认样式将具有类似的规则 Map { background-color:#f00; } 这为
我有一个奇怪的问题,我在尝试在 WebGL 中进行混合时无法弄清楚。黑色呈现为完全透明,所有带有灰色阴影的内容也呈现为半透明。我已经将它设置为使用 alpha channel 作为透明度的来源,并且在
我是一名优秀的程序员,十分优秀!