AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farbe beim Apfelmännchen verändern

Ein Thema von Daniel07A · begonnen am 15. Mai 2005 · letzter Beitrag vom 15. Mai 2005
 
Daniel07A

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

Farbe beim Apfelmännchen verändern

  Alt 15. Mai 2005, 12: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz