Einzelnen Beitrag anzeigen

Daniel07A

Registriert seit: 15. Mai 2005
12 Beiträge
 
Delphi 7 Enterprise
 
#1

Farbe beim Apfelmännchen verändern

  Alt 15. Mai 2005, 13:05
Hi,

Ich habe ein Programm über das Apfelmännchen. Wie kann ich die Farbe des Apfelmännchens ändern, bzw. verschiedene Fabrarten zur auswahl stellen ?


Die entsprechende Zeilen im Quellcode:
Delphi-Quellcode:
if k >= kmax then k:=0;    
  FRM_Main.IMG_Apfelmann.canvas.pixels[x_bild+1,y_bild+1] := 16000000div(k+1);

Der gesamte Quellcode:
Delphi-Quellcode:
t UNT_AM_Main;    

interface    

uses    
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,    
  Dialogs, StdCtrls, Buttons, ExtCtrls, jpeg;    

type    
  TFRM_Main = class(TForm)    
    BTN_Options: TBitBtn;    
    BTN_Zeichnen: TBitBtn;    
    IMG_Apfelmann: TImage;    
    SHP_Unterteilung: TShape;    
    procedure BTN_OptionsClick(Sender: TObject);    
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;    
      Shift: TShiftState; X, Y: Integer);    
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;    
      Shift: TShiftState; X, Y: Integer);    
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,    
      Y: Integer);    
    procedure FormCreate(Sender: TObject);    
    procedure BTN_ZeichnenClick(Sender: TObject);    
  private    
    { Private-Deklarationen }    
  public    
    { Public-Deklarationen }    
  end;    

var    
  FRM_Main: TFRM_Main;    

implementation    

uses UNT_AM_Options;    

{$R *.dfm}    

var x_bild,y_bild,kmax,k,rmax,xo,xu,yl,yr : integer;    
    x,xalt,y,dx,dy,creal,cimag : real;    
    xmax,xmin,ymax,ymin : real;    
    md : boolean;    

procedure iteration(x_bild,y_bild: integer);    
begin    
  x := xmin + x_bild*dx;    
  y := ymax - y_bild*dy;    
  creal := (x_bild) *dx+xmin;    
  cimag := (400-y_bild) *dy+ymin;    
  k := 0;    
  repeat    
    xalt := x;    
    x := sqr(x) - sqr(y) + creal;    
    y := 2*xalt*y + cimag;    
    inc(k);    
  until (sqr(x)+sqr(y)>rmax) or (k>kmax);    
  if k >= kmax then k:=0;    
  FRM_Main.IMG_Apfelmann.canvas.pixels[x_bild+1,y_bild+1] := 16000000div(k+1);    
end;    

procedure TFRM_Main.BTN_OptionsClick(Sender: TObject);    
begin    
FRM_Options.show;    
end;    

procedure TFRM_Main.FormMouseDown(Sender: TObject; Button: TMouseButton;    
  Shift: TShiftState; X, Y: Integer);    
var a,b : real;    
begin    
  a := xmin + (x-152)*(xmax-xmin)/500;    
  b := ymax - (y-8)*(ymax-ymin)/400;    
  FRM_Options.EDT_xmin.Text := floattostrf(a,fffixed,10,8);    
  FRM_Options.EDT_ymax.Text := floattostrf(b,fffixed,10,8);    
  xo := x; yl := y; xu := x; yr := y;    
  md := true;    
end;    

procedure TFRM_Main.FormMouseUp(Sender: TObject; Button: TMouseButton;    
  Shift: TShiftState; X, Y: Integer);    
begin    
  md := false;    
end;    

procedure TFRM_Main.FormMouseMove(Sender: TObject; Shift: TShiftState; X,    
  Y: Integer);    
var a,b : real;    
begin    
  if md then    
   begin    
     a := xmin + (x-152)*(xmax-xmin)/500;    
     b := ymax - (y-8)*(ymax-ymin)/400;    
     FRM_Options.EDT_xmax.Text := floattostrf(a,fffixed,10,8);    
     FRM_Options.EDT_ymin.Text := floattostrf(b,fffixed,10,8);    
     IMG_Apfelmann.canvas.Pen.Mode := pmnotxor;    
     IMG_Apfelmann.canvas.Rectangle(xo,yl,xu,yr);    
     IMG_Apfelmann.canvas.Rectangle(xo,yl,x,y);    
     IMG_Apfelmann.canvas.Pen.Mode := pmcopy;    
     xu := x; yr := y;    
   end;    
end;    

procedure TFRM_Main.FormCreate(Sender: TObject);    
begin    
 md := false;    
end;    

procedure TFRM_Main.BTN_ZeichnenClick(Sender: TObject);    
begin    
xmax := strtofloat(FRM_Options.EDT_xmax.text);    
xmin := strtofloat(FRM_Options.EDT_xmin.text);    
ymax := strtofloat(FRM_Options.EDT_ymax.text);    
ymin := strtofloat(FRM_Options.EDT_ymin.text);    
kmax := strtoint(FRM_Options.EDT_kmax.text);    
rmax := strtoint(FRM_Options.EDT_rmax.Text);    
creal := strtofloat(FRM_Options.EDT_creal.text);    
cimag := strtofloat(FRM_Options.EDT_cimag.text);    
dx := (xmax-xmin)/500;    
dy := (ymax-ymin)/400;    
for x_bild := 0 to 500 do    
   for y_bild := 0 to 400 do iteration (x_bild,y_bild);    
end;    

end.
Hoffe ihr versteht mich.

Gruß Daniel
  Mit Zitat antworten Zitat