Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bitmap an Thread Klasse übergeben (https://www.delphipraxis.net/98397-bitmap-thread-klasse-uebergeben.html)

Christian18 26. Aug 2007 20:35


Bitmap an Thread Klasse übergeben
 
Hallo,

wie kann ich ein Bitmap an eine Thread Klasse übergeben?

LG Chris

mkinzler 26. Aug 2007 20:36

Re: Bitmap an Thread Klasse übergeben
 
Als Member der Klasse oder besser als Parameter einer Methode

Christian18 26. Aug 2007 20:40

Re: Bitmap an Thread Klasse übergeben
 
Delphi-Quellcode:
unit Unit2;

interface

uses
  Windows, Classes, Graphics;

type
  TMyThread = class(TThread)
  private
    { private-Deklarationen }
  protected
    procedure Execute; override;
  end;

type
  TFarbe = record
    Red  : Integer;
    Green : Integer;
    Blue : Integer;
  end;

implementation

{ TMyThread }

procedure TMyThread.Execute;
  var Bitmap : TBitmap;
      x, y  : Integer;
      Farbe : TFarbe;
      Arith : Integer;
begin
  for x:=0 to Bitmap.Width do
    begin
      for y:=0 to Bitmap.Height do
        begin
          with Farbe do
            begin
              Red:=GetRValue(Bitmap.Canvas.Pixels[x, y]);
              Green:=GetGValue(Bitmap.Canvas.Pixels[x, y]);
              Blue:=GetBValue(Bitmap.Canvas.Pixels[x, y]);

              Arith:=Round((Red + Green + Blue) / 3);
            end;
          Bitmap.Canvas.Pixels[x, y]:=RGB(Arith, Arith, Arith);
        end;
    end;
end;

end.
So sieht mein Code nun aus. Das Bitmap wo drauf gemalt wird nun aber übergeben. Wie mache ich das?

mkinzler 26. Aug 2007 20:44

Re: Bitmap an Thread Klasse übergeben
 
TMyThread = class(TThread)
private
{ private-Deklarationen }
FBild: TBitmap;
protected
procedure Execute; override;
published
property Bild: TBitmap read FBild write FBild;
end;
...
Delphi-Quellcode:
procedure TMyThread.Execute;
[s] var Bitmap : TBitmap;[/s]
      x, y  : Integer;
      Farbe : TFarbe;
      Arith : Integer;
begin
  for x:=0 to Bild.Width do
Delphi-Quellcode:
MyThread.Bild := Bitmap;

Christian18 26. Aug 2007 20:54

Re: Bitmap an Thread Klasse übergeben
 
ok,

super danke funktioniert.

Mein Problem war, dass ich nicht wusste das man auch verhindert kann das der Thread gleich beim aufrufen des Constructors ausgeführt wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:23 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz