Ist sowas mit Canvas möglich?

Für Probleme bezüglich Grafik, Audio, GL, ACS, ...

Ist sowas mit Canvas möglich?

Beitragvon sstvmaster » 30. Okt 2016, 01:33 Ist sowas mit Canvas möglich?

Hallo

ich möchte gern so etwas machen wie in den Bildern zu sehen ist. Außerdem sollen 2 Zeiger, einer für IST und einer für SOLL, eingezeichnet werden und sich bewegen.
Ist das überhaupt möglich?

LG Maik

el.bmp
az.bmp
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 92
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon theo » 30. Okt 2016, 11:04 Re: Ist sowas mit Canvas möglich?

Klar ist das möglich. Du kannst auf den Canvas malen was du willst.
Du kannst auch gleich das Bild als Hintergrund nehmen und dann nur noch den Zeiger drauf malen.
theo
 
Beiträge: 8064
Registriert: 11. Sep 2006, 18:01

Beitragvon sstvmaster » 30. Okt 2016, 11:10 Re: Ist sowas mit Canvas möglich?

Ok danke, und wie? Gibt es ein Canvas Tutorial oder so? Scripte für ne Uhr wurden hier im Forum schon behandelt. Als Grundlage zum spielen würde ich mir so ein Script nehmen.

Kann mir jemand da noch ein paar Tipps geben wie ich das mit den Zahlen usw. machen kann?
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 92
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon wp_xyz » 30. Okt 2016, 11:24 Re: Ist sowas mit Canvas möglich?

z.B. das:
http://wiki.freepascal.org/Drawing_with_canvas/de
http://www.hh.schule.de/hhs/delphi/Graf ... elphi1.pdf

Bei der Textausgabe (mit Canvas.TextOut(x,y, text)) ist zu beachten, dass am Ort (x,y) die linke obere Ecke des Textes liegt. Du musst alse die Position jeder Zahl separat korrigieren. Dazu brauchst du sicher etwas geometirsches Verständnis, sowie das Wissen, dass Canvas.TextWidth(text) die Breite und Canvas.TextHeight(text) die Höhe eines Textes ermitteln (in Pixeln),
wp_xyz
 
Beiträge: 2672
Registriert: 8. Apr 2011, 08:01

Beitragvon sstvmaster » 30. Okt 2016, 16:43 Re: Ist sowas mit Canvas möglich?

Danke für die Links und die Hinweise.

So habe jetzt mal ein Uhren Script angepasst. Leider bekomme ich das mit dem Rechtecken nicht so hin wie im Beispielbild oben.
Wie bekomme ich den schwarzen Rahmen um die Roten Kreise weg? Wie kann ich die kanten glätten?

Code: Alles auswählen
 
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure DrawHands;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
  xcenter:integer = 80;
  ycenter:integer = 80;
  lastxs,lastys,lastxm,lastym,lastxh,lastyh:integer;
 
  clockbg: tbitmap;
 
  scond, minute, hour: integer;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure Tform1.DrawHands();
var
  HH,MM,SS,MS: Word;
  xhour, yhour, xminute, yminute, xsecond, ysecond, second, minute, hour: Integer;
  cSecond, cMinute, cHour: TColor;
begin
  // hand colors
  cSecond:=clGreen;
  cMinute:=clBlue;
  cHour:=clRed;
 
  // get the time
  DecodeTime(Time,HH,MM,SS,MS);
  second:=SS;
  minute:=MM;
  hour:=HH;
 
  // calculation of (x, y) points where the hands will point to
  xsecond := round(cos(second * pi / 30 - pi / 2) * 80 + xcenter);
  ysecond := round(sin(second * pi / 30 - pi / 2) * 80 + ycenter);
  xminute := round(cos(minute * pi / 30 - pi / 2) * 60 + xcenter);
  yminute := round(sin(minute * pi / 30 - pi / 2) * 60 + ycenter);
  xhour := round(cos((hour * 30 + minute / 2) * pi / 180 - pi / 2) * 40 + xcenter);
  yhour := round(sin((hour * 30 + minute / 2) * pi / 180 - pi / 2) * 40 + ycenter);
 
  with Canvas do begin
 
    // drawing the hands
    pen.Color:=cSecond;
    Line(xcenter, ycenter, xsecond, ysecond);
    pen.Color:=cMinute;
    Line(xcenter, ycenter - 1, xminute, yminute);
    Line(xcenter - 1, ycenter, xminute, yminute);
    pen.Color:=cHour;
    Line(xcenter, ycenter - 1, xhour, yhour);
    Line(xcenter - 1, ycenter, xhour, yhour);
 
  end;
 
  // some info we can use later...
  lastxs := xsecond;
  lastys := ysecond;
  lastxm := xminute;
  lastym := yminute;
  lastxh := xhour;
  lastyh := yhour;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var a,b,c: integer;
begin
  clockbg:=tbitmap.Create;
  clockbg.SetSize(160,160);
  with clockbg.Canvas do begin
    // background clearing
    Brush.Color:=RGBToColor(0,90,82);
    FillRect(0,0,160,160);
 
    // clock area
    Brush.Color:=clWhite;
    Ellipsec(xcenter, ycenter, 160, 160);
 
    // draw numbers...
    Font.Color:=clBlack;
    Font.Size:=8;
    Brush.Style:=bsClear;
    b:=1;
    c:=30;
    while b <= 11 do
    begin
        TextOut(round(cos((b*30)*pi/180-pi/2)*68+xcenter-10),
                round(sin((b*30)*pi/180-pi/2)*68+ycenter-7), IntToStr(c));
        b:=b+1;
        c:=c+30;
    end;
    TextOut(round(cos((12*30)*pi/180-pi/2)*68+xcenter-10),
            round(sin((12*30)*pi/180-pi/2)*68+ycenter-7), '0');
 
    // draw the red circle
    Brush.Style:=bsSolid;
    Brush.Color:=clRed;
    a:=1;
    while a <= 12 do
    begin
      EllipseC(
        round(cos((a*30)*pi/180-pi/2)*50+xcenter),
        round(sin((a*30)*pi/180-pi/2)*50+ycenter),
        4,4);
        a:=a+1;
    end;
 
    // draw the black dots
    Brush.Style:=bsSolid;
    Brush.Color:=clBlack;
    a:=1;
    while a <= 36 do
    begin
      Rectangle(
        round(cos((a*10)*pi/180-pi/2)*48+xcenter),
        round(sin((a*10)*pi/180-pi/2)*48+ycenter),
        round(cos((a*10)*pi/180-pi/2)*52+xcenter),
        round(sin((a*10)*pi/180-pi/2)*52+ycenter)
        );
        a:=a+1;
    end;
 
  end;
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  if clockbg <> nil then
    FreeAndNil(clockbg);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if clockbg <> nil then begin
    Canvas.Draw(0,0,clockbg);
    //DrawHands;
  end;
end;
 
end.
 
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 92
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon Nixsager » 30. Okt 2016, 16:53 Re: Ist sowas mit Canvas möglich?

@sstvmaster
Danke für das Posten des Codes!
Ich habe mal für ein Programm eine Analoge Uhr machen wollen, aber die ganze Mathematik dahinter ist mir zu hoch.
Deswegen habe ich mit einer Funktion (die habe ich aus dem Internet) mehrere Grafiken für verschiedenen Einheiten genommen und sie entsprechend gedreht.
Jetzt kann ich mir eine bessere Funktion bauen. :D
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!
Nixsager
 
Beiträge: 159
Registriert: 8. Okt 2016, 07:38
Wohnort: Polska
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Mathias » 30. Okt 2016, 16:54 Re: Ist sowas mit Canvas möglich?

Wie bekomme ich den schwarzen Rahmen um die Roten Kreise weg?

Code: Alles auswählen
  Canvas.Pen.Color := clRed;
  Canvas.Brush.Color := clRed;
  Canvas.Ellipse(100, 100, 200, 200);


Brush isr die Füllfarbe und Pen ist die Farbe des Randes.

Ich täte für die Uhr eine eigene Komponenten machen, welche von einem Panel abgeleitet ist.
So etwa, wie ich es im Anhang gemacht habe.
Das ist nach meiner Meinung viel eleganter und flexibler.
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon sstvmaster » 30. Okt 2016, 17:03 Re: Ist sowas mit Canvas möglich?

Danke euch, aber eigentlich will ich keine Uhr, sondern so etwas wie in den beiden Bildern zu sehen ist. Ich habe da Uhren Script nur als Beispiel genommen um einen Anfang für mein Script zu haben.
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 92
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon Nixsager » 30. Okt 2016, 17:06 Re: Ist sowas mit Canvas möglich?

Das weiß ich auch. ;)
Aber du willst ja einen analogen Zeiger, wenn du so was wie auf den Bildern machen willst, dann ist das Prinzip das selbe.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!
Nixsager
 
Beiträge: 159
Registriert: 8. Okt 2016, 07:38
Wohnort: Polska
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

Beitragvon Mathias » 30. Okt 2016, 17:12 Re: Ist sowas mit Canvas möglich?

um einen Anfang für mein Script zu haben.

Meinst du wirklich Script, oder einfach einen Quellcode ?

sondern so etwas wie in den beiden Bildern zu sehen ist.

Hast du meine Anhang mal angeguckt ?
Mit Lazarus sehe ich gün
Mit Java und C/C++ sehe ich rot
Mathias
 
Beiträge: 4342
Registriert: 2. Jan 2014, 17:21
Wohnort: Schweiz
OS, Lazarus, FPC: Linux (die neusten Trunc) | 
CPU-Target: 64Bit
Nach oben

Beitragvon wp_xyz » 30. Okt 2016, 17:37 Re: Ist sowas mit Canvas möglich?

Sieht ja schon mal ganz gut aus! Was noch nicht richtig ist, dass du das OnPaint-Event des Formulars nicht verwendest, um die Uhr auszugeben. Diese wird zwar jeweils vom Timer in einem bestimmten Intervall jeweils neu gezeichnet. Wenn du dazwischen aber ein anderes Fenster über die Uhr und wieder wegschiebst, verschwindet die Uhr bis zum nächsten Timer-Event. Grundregel muss immer sein: Zeichnen nur im OnPaint-Event, und im OnTimer-Event würde ich nicht direkt Zeichen-Operationen aufrufen, sondern das OnPaint-Event generieren, indem ich Invalidate aufrufe (oder Refresh, oder Repaint).

Code: Alles auswählen
procedure TForm1.FormPaint(Sender: TObject);
begin
  if clockbg <> nil then
    Canvas.Draw(0, 0, clockbg);
end;
 
procedure TForm1.TimerTimer(Sender: TObject);
begin
  Invalidate;
end;


Der schwarze Rand um die roten Punkte ist die Farbe den Pen, der von dir nicht verändert wurde, also noch auf schwarz steht. Setze entweder Pen.Color auf dieselbe Farbe wie Brush.Color, oder setze Pen.Style auf psClear (kein Rand).

Was meinst du mit den "Rechtecken"?

Bei der Erstellung des Uhrenhintergrunds in FormCreate gefallen mir die "magischen" Zahlen 160, 68, 10, 7 nicht. Dass 160 der Durchmesser des Ziffernblattes ist, geht wahrscheinlich an allen möglichen Stellen in die Rechnung ein - du hast extrem viel Arbeit, wenn du mal die Uhr größer ausgeben willst! Nimm stattdessen eine Variable (Radius) und setze sie zu beginn auf 80. 68 ist wahrscheinlich (ich muss es ahnen...) die Breite einer Beschriftung - dieser Wert stimmt jetzt schon nicht für alle Stunden, aber definitiv nicht, wenn du aus irgendeinem Grund später die Schrift größer machst. Du kannst aber mit w := Canvas.TextWidth(IntToStr(c)) die Breite jeder einzelnen Beschriftung berechnen (w ist ein Integer, c der Stundenwert). Genauso findest du mit h := Canvas.TextHeight(IntToStr(c)) die Höhe jeder Zahl (wobei diese immer gleich ist, es reicht also h := Canvas.TextHeight('0') zu nehmen).

Wie ich geschrieben habe, musst du für jede Stunde die genaue Position des Textbeginns (linke obere Ecke) einzeln berechnen. Dazu nimmst du am einfachsten eine große case-Anweisung, in der du dir jede Stunde einzeln vornimmst. Zunächst legst du den Radius des Kreises fest, an dem der Stunden-Text "anliegt", RText := Radius + 10 (um 10 Pixel größer als der Ziffernblatt-Radius, oder so - den Ziffernblatt-Radius sehe ich durch die Position der roten und schwarzen Punkte definiert; idealerweise deklarierst du die 10 noch als Konstante (z.B. const TEXT_ABSTAND = 10; RText := Radius + TEXT_ABSTAND) zu Beginn deines Codes, damit wird's sehr übersichtlich und lesbar).

Zuerst die einfachen Fälle:

Die Stunde ganz oben (0 bzw. 12) ist horizontal zentriert und um 1 Texthöhe nach oben geschoben. Wenn x und y die Position des Textankers in der linken oberen Text-Ecke bezeichnen, gilt hier: x := xcenter - w div 2; y := ycenter - RText - h

Die Stunde ganz unten (6) ist ebenfalls horizontal zentriert, aber der vertikale Textanker ist schon richtig: x := xcenter - w div 2; y := yCenter + RText

Die Stunde ganz rechts (3) ist vertikal zentriert und linksbündig, d.h. der Text beginnt direkt an der richtigen Stelle: x := xcenter + RText; y := ycenter - h div 2

Die Stunde ganz links (9) ist ebenfalls vertikal zentriert, aber rechtsbündig, d.h der Textanker liegt um 1 Textbreite weiter links: x := xcenter - RText - w; y := ycenter - h div 2

Die Stunden dazwischen sind schwierig, ich würde mal ausprobieren, wie es aussieht, wenn die Ecken des Texts am Anfangspunkt liegen. Die Rechnung überlasse ich dir, dass du sin und cos verwenden musst, hast du ja schon erkannt.

Insgesamt (ich nehme für x und y einen TPoint-Record damit kriege ich die beiden x und y Anweisungen in 1 Zeile:
Code: Alles auswählen
 
var
  P: TPoint;
  w: Integer;
  h: Integer;
...
  w := Canvas.TextWidth(IntToStr(c));
  h := Canvas.TextHeight('0')// ist für alle Werte gleich
  case c of
    0: P := Point(xcenter - w div 2, ycenter - RText - h);
    1: // ... von dir zu lösen...
    2: // ... von dir zu lösen...
    3: P := Point(xcenter + RText, ycenter - h div 2);
    // ... etc bis 11
  end;
  Canvas.TextOut(P.X, P.Y, IntToStr(c));
wp_xyz
 
Beiträge: 2672
Registriert: 8. Apr 2011, 08:01

Beitragvon sstvmaster » 30. Okt 2016, 20:58 Re: Ist sowas mit Canvas möglich?

Dankeschön, habe mal noch weiter gemacht. Elevation hab ich noch nicht gemacht.

nochmal ich möchte keine UHR programmieren. Das soll für eine Satellitensteuerung sein.
360° für Azimuth 90° für Elevation.


Code: Alles auswählen
 
unit Unit1;
 
{$mode objfpc}{$H+}
 
interface
 
uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ExtCtrls;
 
type
 
  { TForm1 }
 
  TForm1 = class(TForm)
    Image1: TImage;
    procedure DrawHands;
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;
 
var
  Form1: TForm1;
 
  xcenter:integer = 80;
  ycenter:integer = 80;
 
  clockbg: tbitmap;
 
implementation
 
{$R *.lfm}
 
{ TForm1 }
 
procedure Tform1.DrawHands();
var
  AZist, AZsoll, xAZist, yAZist, xAZsoll, yAZsoll: Integer;
begin
  // get the time
  AZist:=45;
  AZsoll:=225;
 
  // calculation of (x, y) points where the hands will point to
  xAZist := round(cos(AZist*pi/180-pi/2)*40+xcenter);
  yAZist := round(sin(AZist*pi/180-pi/2)*40+ycenter);
  xAZsoll := round(cos(AZsoll*pi/180-pi/2)*40+xcenter);
  yAZsoll := round(sin(AZsoll*pi/180-pi/2)*40+ycenter);
 
  with Image1.Canvas do begin
    // AZ ist
    pen.Color:=clLime;
    pen.Width:=2;
    Line(xcenter, ycenter, xAZist, yAZist);
    //AZ soll
    pen.Color:=clBlack;
    pen.width:=2;
    Line(xcenter, ycenter, xAZsoll, yAZsoll);
  end;
 
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var a,b,c,d: integer;
begin
  clockbg:=tbitmap.Create;
  clockbg.SetSize(160,160);
  with clockbg.Canvas do begin
    // background clearing
//    Brush.Color:=RGBToColor(0,90,82);
    FillRect(0,0,160,160);
 
    // clock area
    Brush.Color:=clWhite;
//    Ellipsec(xcenter, ycenter, 160, 160);
 
    // draw numbers...
    Font.Color:=clBlack;
    Font.Size:=8;
    Brush.Style:=bsClear;
    b:=1;
    c:=30;
    while b <= 11 do
    begin
        TextOut(round(cos((b*30)*pi/180-pi/2)*68+xcenter-10),
                round(sin((b*30)*pi/180-pi/2)*68+ycenter-7), IntToStr(c));
        b:=b+1;
        c:=c+30;
    end;
    TextOut(round(cos((12*30)*pi/180-pi/2)*68+xcenter-10),
            round(sin((12*30)*pi/180-pi/2)*68+ycenter-7), '0');
 
    // draw the red circle
    Pen.Color:=clRed;
    Brush.Style:=bsSolid;
    Brush.Color:=clRed;
    a:=1;
    while a <= 12 do
    begin
      EllipseC(
        round(cos((a*30)*pi/180-pi/2)*50+xcenter),
        round(sin((a*30)*pi/180-pi/2)*50+ycenter),
        4,4);
        a:=a+1;
    end;
 
    // draw the black dots
    Pen.Color:=clBlack;
    Brush.Style:=bsSolid;
    Brush.Color:=clBlack;
    a:=1;
    d:=1;
    while a <= 36 do
    begin
      if (a=d*3) then
       begin
        Pen.Color:=clRed;
        d:=d+1;
       end
      else Pen.Color:=clBlack;
      Rectangle(
        round(cos((a*10)*pi/180-pi/2)*50+xcenter+1),
        round(sin((a*10)*pi/180-pi/2)*50+ycenter-1),
        round(cos((a*10)*pi/180-pi/2)*50+xcenter-1),
        round(sin((a*10)*pi/180-pi/2)*50+ycenter+1)
        );
        a:=a+1;
    end;
 
  end;
end;
 
procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  if clockbg <> nil then
    FreeAndNil(clockbg);
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  if clockbg <> nil then begin
    Image1.Canvas.Draw(0,0,clockbg);
  DrawHands;
end;
 
end;
 
end.
 
 
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 92
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon sstvmaster » 30. Okt 2016, 21:00 Re: Ist sowas mit Canvas möglich?

Kann ich auch was in Form.Create steht eigentlich auch in eine procedure stecken? Habe es schon probiert aber das Bild wird nicht gezeichnet!
OS: Windows 7 32/64bit
Lazarus 1.8.4, 32bit
Lazarus 2.1.0 Trunk 3.3.1, 32bit
sstvmaster
 
Beiträge: 92
Registriert: 22. Okt 2016, 22:12
OS, Lazarus, FPC: Lazarus 1.8.4 + 2.1.0 Trunk 3.3.1 / Win32, Windows 7 32+64bit | 
CPU-Target: 32Bit
Nach oben

Beitragvon wp_xyz » 30. Okt 2016, 21:56 Re: Ist sowas mit Canvas möglich?

sstvmaster hat geschrieben:Kann ich auch was in Form.Create steht eigentlich auch in eine procedure stecken? Habe es schon probiert aber das Bild wird nicht gezeichnet!

Natürlich. Aber du musst die Prozedur natürlich auch aufrufen.

sstvmaster hat geschrieben:nochmal ich möchte keine UHR programmieren. Das soll für eine Satellitensteuerung sein.
360° für Azimuth 90° für Elevation.

Kein Grund herumzuschreien. Ist doch egal, ob die Labels mit 0-11 beschriftet sind, oder mit 0-330.
wp_xyz
 
Beiträge: 2672
Registriert: 8. Apr 2011, 08:01

Beitragvon Nixsager » 30. Okt 2016, 22:14 Re: Ist sowas mit Canvas möglich?

Die Frage würde mich auch mal interessieren.
Habe es ausprobiert und wenn ich einen Knopf mit folgendem Code erstelle 'Form1.Canvas.Draw(0,0,clockbg);' wird der Inhalt von 'clockbg'gezeichnen.:?

sstvmaster hat geschrieben:nochmal ich möchte keine UHR programmieren. Das soll für eine Satellitensteuerung sein.
360° für Azimuth 90° für Elevation.


ROFL
Das Ziel ist egal. Die Funktion kann man für beides verwenden.
Jeder der sagt, ich könnte programmieren, der hat noch weniger Ahnung vom programmieren als ich!!!
Nixsager
 
Beiträge: 159
Registriert: 8. Okt 2016, 07:38
Wohnort: Polska
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z) | 
CPU-Target: xxBit
Nach oben

» Weitere Beiträge siehe nächste Seite »
Nächste

Zurück zu Multimedia



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

porpoises-institution
accuracy-worried