c# - 在 Silverlight 中如何将字符串绘制到位图中?

标签 c# silverlight-3.0 bitmap image-manipulation

在普通的 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/

相关文章:

c# - 为什么我的 SQL Server 数据在应用程序停止时被删除?

c# - 将 ASP.NET 应用程序转换为 Silverlight 应用程序

c# - Visual Studio 搜索查找/替换中的正则表达式否定

c# - pythonnet 在 .net 示例中嵌入 Python 加载模块失败

c# - 通过 ForMember 从自定义 map 中提取 AutoMapper 源名称

Silverlight 圆角

silverlight - 如何在服务器端增加 MaxStringContentLength 以进行二进制 Http 绑定(bind)

winapi - 基于 Win32 对话框的无边框窗口,具有位图背景和视觉样式

algorithm - 计算位图图像中完全绑定(bind)的孔?

c# - 我需要在 C# 中为缩放后的图像设置别名