我在wince平台下使用DrawText函数,做滚动字幕,用一个变量start作为起始点,开始往下画,当计时器被激发的时候,start向上移动一点,在往下绘制。
但是,当start为负且负到一定大的时候(如-1000),就不动了,请各位大侠帮帮忙!谢谢,代码如下:
for(int i=startline;i
{
if(rect.top<=123&&rect.top>=96)
memDC.SetTextColor(RGB(255,255,0));
else if(rect.top<20)
memDC.SetTextColor(RGB(0,100,0));
else if(rect.top<97)
memDC.SetTextColor(RGB(0,150,0));
else
memDC.SetTextColor(RGB(0,250,0));
memDC.DrawText(m_lyric.strLyric,&rect,DT_CENTER);
rect.top+=26;//上移
rect.bottom=rect.top+26;
}
这种问题,楼主单步调试一下,就能知道错误出在什么地方了。
麻烦 这位仁兄说一下吧
因为我在pc上是正常得啊!
是不是因为那个函数在ce下运行不正确啊!
如果能给出一定得解决办法,更好
调试通过,马上结帖,散分
PC上正常关CE什么事啊,又不是一样的系统,你代码放LINUX上都编译不了。
linux那是跨了很大的平台了
ce上,这几个函数都支持啊。
所以我就搞不清为什么不正确了,麻烦大侠们给点建议啊
我在OpentCF里看过里有个控件可以作到滚动字幕的效果!
在这之前我们也想了个笨方法,时间控件让lable控件移动,见笑了~呵呵
int i = 1;
int x = 0;
private void timer1_Tick(object sender, EventArgs e)
{
Point point = new Point(x, 118);
if (x >240)
{
i = i * (-1);
}
if (x <-lblmessage.Width)
{
i = i * (-1);
}
lblmessage.Location = point;
x = x + i;
谢谢!
但是,我想知道,我的程序为什么不能运行啊?
lz看看自己贴的代码和文字说明。
代码里连start这个你所描述的重要变量都没有出现。你想别人怎么给你解决。
话要说回来,这种问题也是自己慢慢跟代码就能找到原因的。
start是绘制字幕的区域的(rect结构),top值
我单步调试过了,但就是找不到原因,而且,也不是负到一定的程度就不动,而是绘几次后,就不动了
基本上应该是忘记了释放 DC releasedc()
问题解决,散分!
原来,局部变量的DC也需要delete啊!!