gpt4 book ai didi

c# - PDFsharp - 透明绘制的图像

转载 作者:太空宇宙 更新时间:2023-11-03 10:26:34 37 4
gpt4 key购买 nike

我目前正在研究 PDF 生成器。我需要先绘制背景图像,然后绘制一个透明度为 85% 的深色图层。我可以很好地绘制它,但是当我想在那之后绘制两个图像时,那些图像也获得了透明度,这不是我想要的。

XBrush brush = new XSolidBrush(XColor.FromArgb((int)(.85 * 255), 255, 255, 255));
DrawPageBackground(gfx,backgroundImage,page.Width.Value,page.Height.Value);
gfx.DrawRectangle(b,0,0,gfx.PageSize.Width,gfx.PageSize.Height );
gfx.DrawImage(otherImage,25,25);

为什么我不能在没有透明度的情况下绘制图像?我现在没有做的只是一些简单的事情吗?

谢谢。

最佳答案

我通过在使用暗层绘制背景之前保存 XGraphicsState 成功解决了这个问题。绘图后,我使用 XGraphicsState 恢复和绘制没有任何透明度的图像。请看下面的一段代码。

XGraphicsState state = gfx.Save();
XBrush brush = new XSolidBrush(XColor.FromArgb((int)(.85 * 255), 255, 255, 255));
DrawPageBackground(gfx,backgroundImage,page.Width.Value,page.Height.Value);
gfx.DrawRectangle(b,0,0,gfx.PageSize.Width,gfx.PageSize.Height );
gfx.DrawImage(otherImage,25,25);
gfx.Restore(state);

方法DrawPageBackground:

private static void DrawPageBackground(XGraphics gfx, XImage image, double pageWidth, double pageHeight)
{
if (image.Size.Width > pageWidth)
gfx.DrawImage(image, CalculateDiffImageCenterToPageCenter(image,pageWidth), 0, CalculateBackgroundImageWidth(image,pageHeight), pageHeight);
else
gfx.DrawImage(image, 0, 0, CalculateBackgroundImageWidth(image, pageHeight),pageHeight);
}

这只是一个辅助方法,用于将背景图像绘制到正确的比例并将其居中。

关于c# - PDFsharp - 透明绘制的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31449327/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com