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