【问题标题】:Get font attribute for code behind获取代码后面的字体属性
【发布时间】:2016-08-18 03:36:14
【问题描述】:

问题是,我需要使用 Graphics.measureString 函数来了解字符串将在我的页面上呈现多长时间(以像素为单位)。问题是,measureString 需要知道使用什么字体系列和字体大小(例如 Verdana 11)才能给我宽度。有关信息,Graphics.measureStrings 需要要测量的字符串、字体系列和字体大小,然后它返回一个 SizeF 对象,您可以从中获取宽度属性,以便您知道网页上的长度(并不总是不过完全准确)。

所以,我想知道是否有办法从页面中获取该信息以获取背后的代码,或者我注定要在我的控件或某些常量类中的某个地方对其进行硬编码。

感谢未来(帮助)的答案

【问题讨论】:

  • 标题中不需要asp.net标签,推荐将其作为标签。
  • 好的,我会确保不再这样做。谢谢

标签: c# .net asp.net


【解决方案1】:

如果您的控件有runat="server",那么您可以使用Style 属性来获取font-familyfont-size

string fontFamily = myControl.Style["font-family"];
string fontSize =  myControl.Style["font-size"];

这仅适用于内联样式。

【讨论】:

  • 我刚刚通过阅读您的答案(并且无法使用它)并再次阅读我的问题意识到它可能需要更多说明。事实上,我需要知道调用该函数的用户控件(ascx)背后的代码中的字体系列和字体大小,而不是从页面本身。
  • @Shadowxvii:那么,您的用户控件位于页面上,您希望从您的用户控件访问页面上控件的样式属性,对吗?为了使用我的解决方案(这可能无论如何都不起作用,这取决于一切的构造方式!)您可以将您的控件公开为页面上的属性,然后使用this.Parent 访问它。
  • 嗯,我想我会坚持我现在所拥有的。感谢您的帮助。
【解决方案2】:

您可以通过带有 System.Web.dll 的 Net Framework 4 使用它;例如:

CssStyleCollection css = CssStyleTools.Create();
css.Value = "border-top:1px dotted #BBB;margin-top: 0px;font-size:12px";
Console.WriteLine(css["margin-top"]); //prints "0px"

你可以看看“Change Font Family and Font Size using HtmlAgilityPack”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-29
    • 2016-11-05
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多