在做字幕输出时,发现如果要想给字幕添加一个黑色的背景,让字幕更清楚些,只有自己画出字幕最方便。这就用到了 GDI。问题是:我输出的字幕不全,被齐刷刷的砍掉了一部分。后来发现是Graphics.VisibleClipBounds Property属性导致的显示不全。我用了成员变量 m_G 从构建函数中获得 控件的G,而这时这个属性就定死了!不能改了,这属性是只读的。因此后面控件大小发生变化,这个值并没有改变。导致输出不可见。引以为戒。大坑一个。
修改方法:每次画出之前,临时获得G,这样就可以了。
将代码改成如下形式:
public void showSubtitle(string subText,bool bForce=false)
{ //draw the string with gdi for the shadow effect
m_topTxtG = lblTopSubtitle.CreateGraphics();
m_topTxtG.DrawString.....
}
马拉孙 于 2021-03-07
北京泛五地区