【发布时间】:2016-01-13 21:52:57
【问题描述】:
我尝试在 C# 中将字符串(单个字符)绘制到位图中的确切位置:
Bitmap bmp = new Bitmap(64, 64);
Graphics g = Graphics.FromImage(bmp);
g.DrawString("W", font1, new SolidBrush(myColor), new Point(32,32);
在单个字母周围渲染了太多空白空间,以至于我无法猜测“需要”的位置来绘制字符以使其在最后的正确位置。
现在我有了字符的像素精确尺寸(查看单独渲染的位图中的位)。但是,如果我无法在准确的位置(例如中心或右上角或 ....)绘制角色,则此信息是无用的。
还有其他方法可以用 C# 在位图上绘制文本吗?或者是否有任何转换方法可以转换 DrawString 需要的真实像素位置?
【问题讨论】:
-
您是否正在寻找 Graphics.MeasureString/MEasureCharRanges 来计算边界矩形?
-
在画之前可以measure the string吗?
-
好吧,只需将绘图原点偏移字形宽度/高度的一半
-
检查完所有像素后,您可以从“额外”位图中复制像素。您还可以设计自己的“字体”并自己栅格化字符。
-
@Konrad - Alex 和 Corak 提出的观点是,一旦您知道边界(“外部”)矩形和非空白像素(“内部矩形)之间的偏移量,您就可以 补偿该偏移量。但是,Corak 给出了错误的公式。给定空白宽度
LM/TM/RM/BM(左/上/右/下边距):定位左上角 :pos.X -= LM; pos.Y -= TM。要更正 居中 位置(假设您已经将pos调整为居中):pos.X -= (LM-RM)/2; pos.Y -= (TM-BM)/2;
标签: c# .net graphics bitmap drawstring