AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Transparenten Kreis zum übermalen der Bewegung zeichnen !?
Thema durchsuchen
Ansicht
Themen-Optionen

Transparenten Kreis zum übermalen der Bewegung zeichnen !?

Ein Thema von Semih · begonnen am 28. Nov 2012 · letzter Beitrag vom 29. Nov 2012
 
Semih

Registriert seit: 28. Nov 2012
6 Beiträge
 
#6

AW: Transparenten Kreis zum übermalen der Bewegung zeichnen !?

  Alt 28. Nov 2012, 13:17
Ehm nicht direkt ich zeichne das auf dem Canvas also TCanvas ! Vielleicht hab ich das auch nur falsch verstanden !

Ich link einfach mal mein Quelltext

Delphi-Quellcode:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Ibackground: TImage;
    Lheader: TLabel;
    Lneu: TLabel;
    Lhigh: TLabel;
    Lquit: TLabel;
    Ipfeil: TImage;
    Timer1: TTimer;
    procedure FormKeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure Timer1Timer(sender:Tobject);
    end;
    Tkreis= class
      x:integer;
      y:integer;
      radius:integer;
      farbe:longint;
      dx:integer;
      dy:integer;
      constructor erzeugen(xpos, ypos ,r : integer; colr:longint; dvx, dvy:integer);
    procedure zeichnen(Canv:Tcanvas; colr: longint);




  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;
  Vmenue:integer; // 0 = Menü 1 , 1 = Menü 2
  Vgame:integer; // 0 = nicht im Spiel , 1 = Im Spiel
  Kreis1:Tkreis;

implementation
constructor Tkreis.erzeugen (xpos, ypos ,r : integer; colr:longint; dvx, dvy:integer);
begin
x := xpos;
y := ypos;
radius := r;
farbe := colr;
dx:= dvx;
dy:=dvy;
end;

{$R *.dfm}
procedure tkreis.zeichnen(Canv:Tcanvas;colr:longint);
begin
  with canv do
  begin
    brush.color:=colr;
    pen.Color:=Form1.color;
    ellipse(x-radius,y-radius,x+radius,y+radius);
  end;
end;
///////////////////////////// KEYS /////////////////////////////////////////////////////////////////////////////////////////////////////
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
//////////////////////////// DOWN KEY //////////////////////////////////////////
  if Vgame = 0 then
  If Key = VK_Down then
    begin
    sndPlaySound('Click01.wav',SND_SYNC);
    if IPfeil.top = 216 then
    Ipfeil.top:= Ipfeil.top + 80
    else
    if Ipfeil.top= 296 then
    Ipfeil.top:= Ipfeil.top + 80
    else Ipfeil.top:= 216;
    end;

//////////////////////////// UP KEY ////////////////////////////////////////////
  if Vgame = 0 then
  if Key = VK_Up then
    begin
    sndPlaySound('Click01.wav',SND_SYNC);
    if IPfeil.top = 216 then
    Ipfeil.top:= 376
    else
    if Ipfeil.top= 296 then
    Ipfeil.top:= 216
    else Ipfeil.top:= 296;
    end;

//////////////////////////// EINGABETASTE //////////////////////////////////////
  if Vgame=0 then
  if Key = VK_RETURN then
begin
  sndPlaySound('Click01.wav',SND_SYNC);
//////////////////////////// MENÜ 0
  if Vmenue=0 then
  if Ipfeil.top = 216 then
  begin
  Lneu.caption:='Einzelspieler';
  Lhigh.caption:='Mehrspieler';
  Lquit.caption:='zurück';
  Vmenue:=1;
  end
      else
      if Ipfeil.top = 296 then Showmessage('Tut mir leid es gibt noch keine Highscores!')
        else close
//////////////////////////// MENÜ 1
  else
  if Vmenue=1 then
  if Ipfeil.top = 216 then
  begin
  Lneu.Visible:=false;
  Lhigh.visible:=false;
  Lquit.Visible:=false;
  Ipfeil.visible:=false;
  Lheader.Visible:=false;
  Vgame:=1;
  Kreis1:=Tkreis.erzeugen(Form1.ClientWidth div 2, Form1.ClientHeight div 2,15,$000000,2,2);
  Kreis1.zeichnen(form1.canvas,kreis1.farbe);
  Timer1.Enabled:=true;
  end
    else
    if Ipfeil.top = 296 then Showmessage ('Tut mir leid es gibt noch keinen Mehrspieler Modus!')
      else
      begin
      Lneu.caption:='Neues Spiel';
      Lhigh.caption:='Highscore';
      Lquit.caption:='Beenden';
      Vmenue:=0;
      end;
   end;
end;

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

procedure anzeigen (kreis:Tkreis);
begin

Kreis.zeichnen(form1.canvas,form1.color);

  if kreis.x>=Form1.clientWidth-kreis.radius then Kreis.dx:=Kreis.dx*(-1);
  if Kreis.x<=0+kreis.radius then Kreis.dx:=kreis.dx*(-1);
  if kreis.y>=Form1.clientheight-kreis.radius then Kreis.dy:=Kreis.dy*(-1);
  if Kreis.y<=0+kreis.radius then Kreis.dy:=kreis.dy*(-1);

  kreis.x:=kreis.x+kreis.dx;
  kreis.y:=kreis.y+kreis.dy;
  Kreis.zeichnen(form1.canvas,kreis.farbe);
end;

Procedure tform1.timer1timer(sender:tobject);
begin
anzeigen(kreis1);
end;



end.
Andere Frage kann man nicht irgendwie die Color Informationen des Timage abfragen und sagen Tkreis soll sie übernehmen ?
  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 10:26 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