2014-10-30 65 views
2

我有一個多線程的應用程序,在線程類中有一個FInputImage:VCL.Graphics.TBitmap。我有另一個名爲FImageV的圖像:VCL.Graphics.Bitmap。德爾福XE7帆布拉伸在線程

檢查下面的代碼:

... 
    FImageV.LoadFromResourceName(HInstance, 'IMAGEH'); 
    ... 

    FInputImage.Canvas.Lock; 
    try 
    FInputImage.Canvas.CopyMode := cmSrcCopy; 
    FInputImage.Canvas.Brush.Color := clRed; 
    FInputImage.Canvas.Rectangle(SR); 
    FInputImage.Canvas.StretchDraw(SR, FImageV); 
    finally 
    FInputImage.Canvas.Unlock; 
    end; 

如果我那麼多個線程運行提交更多的圖像,而StretchDraw什麼也不做,就消失了。我只看到用矩形(SR)繪製的紅色矩形。

這是隨機發生的。所有對象都在線程內創建並釋放。我還嘗試將FImageH作爲單獨的類變量添加,因爲它是靜態圖像,但結果相同。

任何想法爲什麼發生這種情況將受到歡迎。

謝謝!

回答

4

也鎖定FImageV的畫布。