我是在wince下画一般的图形,矩形,椭圆,图片等等。重绘的时候,我先把图形画到一张图片上,再把图片画到画布上,闪烁不是很严重了,可是每次部署的时候屏幕都会先黑一下,而且每次鼠标点两次才有效,这是怎么回事?请各位高手指点一下。代码如下: Graphics g = this.CreateGraphics();
if (All)
{ //把静态图画到背景图片上
Graphics backG;
backG = Graphics.FromImage(offScreenBackBmp);
backG.Clear(this.BackColor);
s.DrawUnselected(backG, this.dx, this.dy);
backG.Dispose();
}
//双缓冲
Graphics offScreenDC;
offScreenDC = Graphics.FromImage(offScreenBmp);
offScreenDC.Clear(this.BackColor);
offScreenDC.DrawImage(this.offScreenBackBmp, 0, 0);//把带有静态图的背景图片画到缓冲区
s.DrawSelected(offScreenDC, this.dx, this.dy);//把动态图画到缓冲区
if (this._mousedown && this.Status == "画图")//鼠标被按下并且在绘图状态
{
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red, 1.5f);
myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
if (this.Option == "LI")
{
offScreenDC.DrawLine(myPen, X1,Y1,X2,Y2);
}
else if (this.Option != "Curve")
{
offScreenDC.DrawRectangle(myPen, X1, Y1, X2-X1, Y2-Y1);
}
myPen.Dispose();
}
if (this._mousedown && this.Status == "选择")
{
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Green, 1.5f);
myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
offScreenDC.DrawRectangle(myPen, X1, Y1, X2-X1, Y2-Y1);
myPen.Dispose();
}
g.DrawImage(offScreenBmp, 0, 0);//把缓冲区画到画布上
offScreenDC.Dispose();
g.Dispose();
if (All)
{ //把静态图画到背景图片上
Graphics backG;
backG = Graphics.FromImage(offScreenBackBmp);
backG.Clear(this.BackColor);
s.DrawUnselected(backG, this.dx, this.dy);
backG.Dispose();
}
//双缓冲
Graphics offScreenDC;
offScreenDC = Graphics.FromImage(offScreenBmp);
offScreenDC.Clear(this.BackColor);
offScreenDC.DrawImage(this.offScreenBackBmp, 0, 0);//把带有静态图的背景图片画到缓冲区
s.DrawSelected(offScreenDC, this.dx, this.dy);//把动态图画到缓冲区
if (this._mousedown && this.Status == "画图")//鼠标被按下并且在绘图状态
{
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Red, 1.5f);
myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
if (this.Option == "LI")
{
offScreenDC.DrawLine(myPen, X1,Y1,X2,Y2);
}
else if (this.Option != "Curve")
{
offScreenDC.DrawRectangle(myPen, X1, Y1, X2-X1, Y2-Y1);
}
myPen.Dispose();
}
if (this._mousedown && this.Status == "选择")
{
System.Drawing.Pen myPen = new System.Drawing.Pen(System.Drawing.Color.Green, 1.5f);
myPen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
offScreenDC.DrawRectangle(myPen, X1, Y1, X2-X1, Y2-Y1);
myPen.Dispose();
}
g.DrawImage(offScreenBmp, 0, 0);//把缓冲区画到画布上
offScreenDC.Dispose();
g.Dispose();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货