首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

关于图像展示

2013-01-07 
关于图像显示void thread(LPVOID p){while(1){Graphics::TBitmap* Bmp1new Graphics::TBitmapGraphics::

关于图像显示

void thread(LPVOID p)
{
   while(1)
   {
     Graphics::TBitmap* Bmp1=new Graphics::TBitmap;
     Graphics::TBitmap* Bmp2=new Graphics::TBitmap;
     Bmp1->LoadFromFile("c:\\000.bmp");
     Bmp1->PixelFormat=pf24bit;
     Bmp2->PixelFormat=pf24bit;
     Bmp2->Width=Bmp1->Width;
     Bmp2->Height=Bmp1->Height;
    // SetStretchBltMode(Bmp1->Canvas->Handle,COLORONCOLOR);
      for(int i=0,j=0;i<Bmp1->Height;i+=2)
     {
       j=i;
       while(j>0)
       {
           ::StretchBlt(Bmp2->Canvas->Handle,0,j-1,
           Bmp1->Width,1,Bmp1->Canvas->Handle,0,
           Bmp1->Height-(i-j-1),Bmp1->Width,1,
           SRCCOPY);
           ::StretchBlt(Bmp2->Canvas->Handle,0,Bmp2->Height-j,
           Bmp2->Width,1,Bmp1->Canvas->Handle,0,i-j,Bmp2->Width,1,
           SRCCOPY);
           j-=2;
       }
       Form1->Canvas->Draw(0,0,Bmp2);
       Sleep(20);
     }
     Bmp2->Canvas->CopyRect(Rect(0,0,Bmp2->Width,Bmp2->Height),
                    Bmp1->Canvas,Rect(0,0,Bmp1->Width,Bmp1->Height));
     Sleep(10);
     delete Bmp1;
     delete Bmp2;
   }
void __fastcall TForm1::FormCreate(TObject* Sender)
{
  _beginthread(thread,0,0);
}
}

为了避免主窗体的延迟反应,于是特意创建了一个线程来画图,但是线程在绘图时,如果鼠标在窗体上移动,则画面绘制会被中断,影响显示效果,请问该如何避免这种情况?
[解决办法]
Form的双缓冲开启了没? 
[解决办法]
把你线程的优先级调到最高。
[解决办法]
不建议使用线程直接绘制到Form上,Form上的绘制还是应该响应 OnPaint事件。
[解决办法]
一般响应窗体事件不会影响画面显示。

热点排行