Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Gleisbild??? mit was??? Paintbox für delphi?? (https://www.delphipraxis.net/98313-gleisbild-mit-paintbox-fuer-delphi.html)

snow 25. Aug 2007 12:36

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
Draw Grind sieht gut aus, vor alles das beispiel mit dem schachfeld kommt meinem gleisbild doch sehr nahe.....

MfG snow

s-off 25. Aug 2007 12:41

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
Zitat:

Zitat von snow
Ne ich galub nicht das ich eine eigene komponente schreiben kann....... !

Glauben <> wissen.

Vielleicht wäre dann genau jetzt der Zeitpunkt, sich mit diesem Thema auseinander zu setzen :?: :!:

Du möchtest ja schon etwas recht spezielles, was sich vom Sinn her nicht unbedingt auf alle 'Lebenslagen' übertragen lässt.
Die Idee eines Gleisplanes ist schon nicht schlecht. Und genau aus diesem Grund würde ich mich bemühen, das ordentlich zu machen, und nicht im Endeffekt vor irgendeinem zusammengefrickelten Ergebnis zu stehen. Ich kann da nur für mich sprechen. Und ich hätte den Anspruch, das bestmögliche Ergebnis zu erzielen. Auch wenn es dadurch ggf. länger dauert, und ich mich in unbekannte Bereiche einarbeiten muss.

Das soll nicht heissen, dass man nicht auch mit bereits existierenden Komponenten ein akzeptables Ergebnis erzielen kann. Doch wird man damit irgendwann sicherlich an seine Grenzen stoßen.

Edit: Rechtschreibfehler ausgebaut.

snow 25. Aug 2007 12:51

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
Naja so speziell ist es auch nicht. Wie gesagt ein gleisplan ist nix anderes als ein 2D-Schachfeld. Ich denke wenn Drawgrid für ein schachbrett reicht dann auch für ein gleisbild.


MfG snow

ich werde nicht drumrum kommen irgendwann etwas selber zu machen spätestens wenn mein program eine automatik bekommen soll aber bis dahin will ich erst mal manuell etwas erfahrung sammeln.

MfG snow

3_of_8 25. Aug 2007 13:23

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
Eine eigene Komponente zu schreiben ist kaum schwerer als eine vorhandene zu verwenden.

Du deklarierst einfach eine Klasse und leitest sie (in deinem Fall nützlich) von TCustomControl ab. Dann überschreibst du die Paint-Methode, deklarierst einen Handler für das OnClick-Ereignis und schon bist du so ziemlich fertig. Dann musst du noch den gleichen Code schreiben wie für dein DrawGrid.

snow 25. Aug 2007 20:35

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
So habs jetzt mit drawgrid versucht. hier mal mein quellcode


Delphi-Quellcode:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Grids,
  Buttons, ComCtrls, ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    DrawGrid1: TDrawGrid;
    bitmap1: tbitmap;

    procedure Button1Click(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);



begin
bitmap1.LoadFromfile('F:\JTSSfMB\icons\scheinwerfein.bmp');

DrawGrid1.Canvas.draw(1,1 ,bitmap1);

end;

initialization
  {$I Unit1.lrs}

end.

Wenn ich jetztausführe kommt wenn ich auf buton1 klicke das hier

Zitat:

Project raised exception class 'External: SIGSEGV'
dann bleibt mein program hängen und der IDE debuggt , er hört erst mit dem debuggen auf wenn ich lazarus neustarte.

Was hab ich falsch gemacht. (die datei exestiert und ist ein 256farben bitmap)

die zellen sind groß genug

MfG snow

s-off 25. Aug 2007 20:58

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
Habe kein Lazarus, aber unter Delphi 'funktioniert' folgendes:

Delphi-Quellcode:
Unit Unit1;

Interface

Uses
   Windows,
   Messages,
   SysUtils,
   Variants,
   Classes,
   Graphics,
   Controls,
   Forms,
   Dialogs,
   StdCtrls,
   Grids;

Type
   TForm1 = Class(TForm)
      DrawGrid1: TDrawGrid;
      Button1: TButton;
      Procedure Button1Click(Sender: TObject);
   private
      Image1: TBitmap;
   End;

Var
   Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.Button1Click(Sender: TObject);
Begin
   Image1 := TBitmap.Create;
   Image1.LoadFromFile('C:\Download\snap00854.bmp');
   DrawGrid1.Canvas.Draw(1, 1, Image1);
End;

End.

snow 25. Aug 2007 21:07

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
Danke funzt bei mir auch hab das .create vergessen.

MfG snow

Edit:// weis jemand warum ich mit
Delphi-Quellcode:
DrawGrid1.Canvas.draw(2,1 ,bitmap1);
das bitmap nicht im feld (2|1) bekomme sondern auf pixel (2|1)??? kann ich das automatisch in eine anderes zelle schicken oder murr ich das ganzen dann errechnen???

DGL-luke 25. Aug 2007 21:34

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
jo, das musst du errechnen.

Du solltest aber im Draw-Event (OnCustomDraw oder so ähnlich) die abmaßungen der jeweiligen zelle direkt mitgeteilt bekommen.

s-off 25. Aug 2007 22:02

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Var
   p: TRect;
Begin
   Image1 := TBitmap.Create;
   Image1.LoadFromFile('C:\Download\snap00854.bmp');
   DrawToCell(DrawGrid1, Image1, 3, 1);
End;

Procedure TForm1.DrawToCell(_Grid: TDrawGrid; _Bitmap: TBitmap; _Col, _Row: Integer);
Var
   p: TRect;
Begin
   p := _Grid.CellRect(_Col, _Row);
   _Grid.Canvas.Draw(p.Left, p.Top, _Bitmap);
End;
Edit: Methode zum Zeichnen eingefügt

snow 26. Aug 2007 10:26

Re: Gleisbild??? mit was??? Paintbox für delphi??
 
So ich hab jetzt eine form,in der ich die abmaße des gleisbildes eingeben kann. dann wird eine anderer Form aufgerufen, in der sich das drawgrid gefindet. Jetzt brauch ich die möglichkeit das ich die position eines mit der maus markierten feld herausfindet.

wie geht das??

MfG snow


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:38 Uhr.
Seite 2 von 3     12 3      

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