Spe*_*uku 5 c# image-manipulation bitmap silverlight-3.0
在普通的C#中,使用Grpahics.DrawString()方法可以很容易地绘制到位图.Silverlight似乎已经废除了Bitmap对象,而且Graphics也不再可用.那么......在使用Silverlight时,我的意思是如何操作/创建位图?如果有帮助,我使用的是Silverlight 3.
让我告诉你我在做什么.我正在获得一个模板,基本上是一个预渲染的图像.然后,用户可以从多个图像中进行选择并输入所请求的文本.然后我将它渲染到图像,调整大小等...在边界内并将其居中在图像的预定义区域.如果我可以计算大小(如在MeasureString方法中),然后绘制字符串(如在Graphics.DrawString方法中),这将是好的.真正的问题,无论我为什么要这样做,都可以做到吗?
问题是:你为什么要这么做?为什么不直接使用TextBlock呢?
如果您尝试动态生成图像,请使用标准 Silverlight/WPF 控件(包括 TextBlock)并将它们呈现为WritableBitmap。
编辑:
好的,您已经更新和扩展了,这让我有更多的内容可以继续。不幸的是,你不会喜欢这个答案。首先,请记住,Silverlight 和 WPF 通常是基于矢量的,并且旨在按矢量使用。尽管 Canvas 允许您进行伪像素操作,但您无法像老式 GDI 那样精确地进行像素操作。这是你的媒介的一个因素。如果您绝对必须按照自己想要的方式来测量事物,我建议您在远程服务器上构建图像并将其传输到您的 Silverlight 应用程序。
您可以使用 ActualWidth 和 ActualHeight 属性计算通过 TextBlock 呈现的文本在屏幕上的大小。但它只适用于已经渲染的控件。像 MeasureString 这样的东西在 Silverlight 中根本不可用。根据您对应用程序的描述,某些用户交互可以完成您想要的任务。用户选择图像,输入文本,然后显示预览。然后,用户可以调整各个文本区域的宽度和高度,直到满意为止,此时您可以使用我上面喜欢的渲染方法拍摄快照。