Thema: Delphi Grafik als screenshot

Einzelnen Beitrag anzeigen

Hartfrid Krause

Registriert seit: 20. Feb 2007
90 Beiträge
 
Delphi XE6 Professional
 
#14

Re: Grafik als screenshot

  Alt 8. Mär 2007, 14:55
Das klappt bei mir noch nicht nach beiden Seiten.
Mit dem folgenden Zeilen werden die Bundesländer zwar unterschiedlich gefärbt, speichere ich sie ab, erhalte ich nur einen schwarz-weiße Kopie.
Mit der schwarz-weiß-Kopie komme ich nicht zum Anzeigen der Ländernamen (als Doublette im Speicher).
Delphi-Quellcode:
 uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  Tform1 = class(TForm)
    PaintBox1: TPaintBox;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure fromshow(sender:TObject);
    procedure paintbox1paint(sender:TObject);
    procedure einfaerben(sender:TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  form1: Tform1;
  var bitmap1:tbitmap;

  implementation

{$R *.dfm}

procedure tform1.fromshow(sender:TObject);
begin
 form1.Width:=7*screen.Width DIV 8;
 form1.Height:=19*screen.Height div 20;
 form1.Left:=(screen.Width-form1.Width) DIV 2;
 form1.Top:=(screen.Height-form1.Height) div 2;
 paintbox1.Height:=645;
 paintbox1.width:=486;
 paintbox1.Left:=(form1.Width-paintbox1.Width) div 2;
 paintbox1.Top:=(form1.Height-paintbox1.Height) div 2;
 paintbox1paint(sender);
end;

procedure tform1. paintbox1paint(sender:TObject);
begin
 Bitmap1 := TBitmap.Create;
 Bitmap1.LoadFromFile('laender.bmp');
 PaintBox1.Canvas.Draw(0,0,Bitmap1);
// Bitmap1.Free;
 einfaerben(sender);
end;

procedure tform1.einfaerben(sender:TObject);
Var farbe:tcolor;
 x,y:integer;
begin
   with canvas do
   with paintbox1 do
   begin
  brush.color:= clbackground; //NRW
  farbe:= pixels[X,Y];
  floodfill(paintbox1.Left+120,paintbox1.Top+260,farbe, fsborder);

   brush.color:= clskyblue; //RHPf
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+80,paintbox1.Top+400,farbe, fsborder);

   brush.color:= clblack; //Nieders
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+170,paintbox1.Top+150,farbe, fsborder);

   brush.color:= clred; //Hessen
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+130,paintbox1.Top+390,farbe, fsborder);

    brush.color:= clfuchsia; //BaWü
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+230,paintbox1.Top+500,farbe, fsborder);

    brush.color:= clmaroon; //Bayern
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+260,paintbox1.Top+450,farbe, fsborder);

   brush.color:=clgreen; //Saarland
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+60,paintbox1.Top+460,farbe, fsborder);

   brush.color:= claqua; //Schl.Holstein
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+200,paintbox1.Top+90,farbe, fsborder);

   brush.color:= clmoneygreen; //Bremen
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+154,paintbox1.Top+160,farbe, fsborder);
   floodfill(paintbox1.Left+150,paintbox1.Top+124,farbe, fsborder);

   brush.color:= clmedgray; //Mecklenburg Vorpomm
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+289,paintbox1.Top+150,farbe, fsborder);

   brush.color:= clappworkspace; //Brandenburg
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+350,paintbox1.Top+200,farbe, fsborder);

    brush.color:= clhotlight; //SachsenAnhalt
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+370,paintbox1.Top+370,farbe, fsborder);

    brush.color:= clyellow; //Sachsen
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+270,paintbox1.Top+270,farbe, fsborder);

   brush.color:= clpurple; //Thüringen
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+250,paintbox1.Top+320,farbe, fsborder);

   brush.color:= clolive; //Berlin
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+385,paintbox1.Top+200,farbe, fsborder);

    brush.color:= cllime; //Hamburg
   farbe:= pixels[X,Y];
   floodfill(paintbox1.Left+220,paintbox1.Top+115,farbe, fsborder);
  end;
 end;

procedure Tform1.Button2Click(Sender: TObject);
begin
  Bitmap1.Canvas.CopyRect(Rect(0, 0, Bitmap1.Width, Bitmap1.Height),
  PaintBox1.Canvas, Rect(0, 0, Bitmap1.Width, Bitmap1.Height));
  Bitmap1.SaveToFile('B.bmp');//wird jetzt überschrieben!
  bitmap1.free;
end;

procedure Tform1.Button1Click(Sender: TObject);
begin
  form1.close;
end;

end.
[edit=SirThornberry]Delphi-Tags gesetzt - nächstes mal bitte selbst machen. Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat