Autor Beitrag
roka6803
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50


Delphi 5 Ent. & Delphi 7
BeitragVerfasst: Sa 20.11.04 12:15 
Hallo Leute,

kann mir jemand step-by-step erklären wie ich per canvas 'ne art Cursor, also am besten ein Kreuz, über ein Image fahren lassen kann wenn ich die Pfeiltasten der Tastatur benutze ?

THX Roka

_________________
Signatur? Was ist das? Brauch ich nicht...
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 20.11.04 13:05 
ich hab hier mal ne alte unit gefunden, die nicht funktionierte, hab sie grad zum laufen gebracht.

Ein ball prallt durch die gegend, mit beliebiger gschwindigkeit, startposition

ersetze den Ball durch dein kreuz und bestimme dann die geschwindigkeit mit
den Pfeiltasten, aber ansonsten müsste der Code helfen:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
unit uball1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ExtCtrls;

type
  TSpielfeld = class(TForm)
    Bild: TImage;
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type tball=class x,y,vx,vy,r:single;
farbe:tcolor;
procedure init(fneu:tcolor;
xneu,yneu,vxneu,vyneu,rneu: single);
procedure ZeigeDich;
procedure BewegeDich;
end;

var
  Spielfeld: TSpielfeld;
  Ball: Tball;

implementation

{$R *.DFM}

procedure tball.init(fneu:tcolor;
xneu,yneu,vxneu,vyneu,rneu: single);
begin
farbe:= fneu;
r:= rneu;
x:= xneu;
x:= yneu;
vx:= vxneu;
vy:= vyneu;
end;

procedure tball.zeigedich;
begin
with spielfeld.bild.canvas do
begin
brush.color:= Farbe;
ellipse(round(x-r),round(y-r),round(x+r),round(y+r));
end;
end;

procedure tball.bewegedich;
begin
x:= x + vx; y:= y +vy;
with spielfeld.bild do
begin
if (x >width-r-1then
begin x:= width-r-1; vx:=-vx end;
if x < r + 1 then begin
x := r + 1; vx:=-vx; end;
if (y > height - r - 1then
begin y := height - r - 1 ; vy:=-vy; end;
if  y < r + 1 then
begin y := r + 1; vy:=-vy; end;
end;
end

procedure TSpielfeld.FormCreate(Sender: TObject);
begin
with bild.canvas do
begin
Spielfeld.doublebuffered:= true;
pen.width:=5;
brush.color:=clwhite;
rectangle(0,0,bild.width,bild.height);
pen.width := 2;
brush.style:=bssolid;
pen.mode:=pmnotxor;
end;
ball.init(clred,random(bild.width-50)+25,
random(bild.height-50)+25,random(9)-4, random(9)-4,20);
ball.zeigedich;
end;

procedure TSpielfeld.Timer1Timer(Sender: TObject);
begin
ball.zeigedich;
bild.canvas.pixels[round(ball.x),round(ball.y)]:=clblack;
ball.bewegedich;
ball.zeigedich;
end;

Initialization
randomize;
ball := tball.create;

finalization
ball.destroy;

end.
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5284
Erhaltene Danke: 27

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Sa 20.11.04 13:06 
ach ja und die maus muss noch ausgeblendet werden:

Cursor:= -1;