ERLEDIGT
JA
JA
ANTWORTEN
14
14
ZUGRIFFE
2013
2013
EMPFEHLEN
-
Hallo
Ich bin neu hier und hoffe das Ihre mir weiter helfen könnt.
Ich habe unter Linux(Knoppix) mit Kylix eine kleine Anwendung geschrieben.Da ich mich
mit dem Progamm aber nicht auskenne sind ein paar Fragen aufgetaucht, die Ihr mir hoffentlich beantworten könnt. Ich habe Sie der Priorität nach geordnet.
1. Wie starte ich eine Kylix Anwendung auf einem Rechner wo kein Kylix installiert ist?
2. Wie ordne ich Buttons die ich in Kylix gesetzt habe und mit der Maus betätigen kann,
einen Buchstaben zur Betätigung zu (nicht in Caption mit &XY will kein ALT drücken
müssen)
3. Wie kann ich Teile einer Bitmap die ich mit Strech in einem Image Anzeigen lasse in
ein anderes Image rein kopieren? So das ich z.B. nur die 1/2 oder 1/4 des Bildes im
neuen Image angezeigt bekomme? Hab in der Kylix Hilfe irgendwas mit CopyRect
gefunden aber wie genau weiß ich nicht.
Auch wenn Ihr mir nur eine Frage beantworten könnt wäre ich euch schon sehr Dankbar
hab nämlich schon über all geguckt und komm nicht weiter.
MfG
Ingo1
-
24.08.07 23:23 #2
- Registriert seit
- Mar 2007
- Beiträge
- 95
zu 1. Kylix erzeugt normalerweise ausführbare Dateien. Evtl. mußt Du jedoch noch Laufzeitpackages mitgeben. Lies Dir mal die Datei DEPLOY.TXT von Kylix durch.
zu 2. Dazu mußt Du KeyPreview des Formulares auf TRUE setzen und im OnKeyPress oder OnKeyDown -Ereignis des Formulares den gedrückten Buchstaben ermitteln
Damit obiger Code funktioniert muß für jeden Button natürlich ein OnClick Ereignis definiert sein.Code :1 2 3 4 5 6 7 8 9
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin case Key of a,A : Button1Click(Sender); b,B : Button2Click(Sender); c,C : Button3Click(Sender); d,D : Button4Click(Sender); end; end;
zu 3. Schau mal hier nach http://www.swissdelphicenter.ch/de/grafik.php. Ist zwar für Delphi aber Kylix ist ja quasi Delphi.
Kleiner Tip: Ich würde lieber mit Lazerus an Stelle von Kylix arbeiten, da die Entwicklung von Kylix eingestellt ist. Lazerus ist eine frei verfügbare IDE für Objektpascal. Lazerus ist stark an Delphi angelehnt und für Linux als auch für Windows verfügbar. Für Lazerus gibt es mehr Komponenten als für Kylix.
-
Hallo Twinsetter
Danke für die Hilfe bei meinen Problemen.
Da hast du recht Kylix erzeugt eine ausführbare Datei aber selbst auf dem Rechner wo Kylix installiert ist muß ich in die profile Datei noch folgenden link eintragen "export LD_LIBRARY_PATH= /user/local/kylix3/bin:$LD_LIBRARY_PATH". Hab mir dann gedacht na gut dann kopier ich halt den gesamten bin Ordner noch mit auf das System wo die Anwendung laufen soll, aber kein Kylix installiert ist. Doch das hat nichts gebracht konnte die ausführbare Datei immer noch nicht aufrufen. Und aus der DEPLOY.txt Datei bin ich nicht wirklich schlau geworden da steht auch was von Bibliotheken die man mit liefern muß aber welche brauch ich und wie link ich die?zu 1. Kylix erzeugt normalerweise ausführbare Dateien. Evtl. mußt Du jedoch noch Laufzeitpackages mitgeben. Lies Dir mal die Datei DEPLOY.TXT von Kylix durch.
Super danke das hat geklappt jetzt nur noch ne Kleinigkeit wie kann ich den Pfeiltasten (hoch runter rechts links) was zu ordnen? Im moment werden Sie ja automatisch (von Kylix vorgegeben) zum verschieben des Focus verwendet. Muß ich diese Funktion erst ausschalten oder wie kann ich denen sonst nen Button1Click(Sender) zuordnen?zu 2. Dazu mußt Du KeyPreview...
Procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
case Key of
a,A : Button1Click(Sender);
end;
end;
... Ereignis definiert sein.
zu3. muß ich ncoh mal gucken bis jetzt hab ich da noch nichts nützliches gefunden.
MfG
Ingo1
-
28.08.07 21:08 #4
- Registriert seit
- Mar 2007
- Beiträge
- 95
Also mit den Libaries muß ich selbst noch mal nachschauen, was man da alles mitgeben muß und wie's genau geht. Muß da noch mal in einem Buch nachlesen, da komme ich aber erst am Wochenende wieder dazu.
Mit den Pfeiltasten ist auch ganz einfach. Hierfür kann man das Ereignis onKeyDown benutzen da dieses auf alle Tasten, also auch auf Sondertasten regiert.
Erzeuge einfach mal ein neues Projekt. Setze bei dem Formular die Eigenschaft KeyPreview auf True. Auf das Formular plazierst Du ein Label und dann schreibst Du in die onKeyDown Procedure folgenden Code:
Jetzt kannst Du die Tasten drücken die Du in Deinem Programm benutzen möchtest. Das Label zeigt dabei den Code der gedrückten Taste an. Wenn Du z.B. a drückst wird 65 angezeigt, Cursor nach oben entspricht 38, Return 13 usw.Code :1 2 3 4
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin Label1.Caption:=inttostr(Key); end;
Die zahlen kannst Du dann wieder mit case auswerten, also:Code :1 2 3 4 5 6 7 8
case Key of 38 : begin end; 65 : begin end; end;
Denk mal über Lazarus nach. Da muß Du nichts mitgeben und das wird auch weiter entwickelt.
-
Hallo
Danke für den Tip habs geschafft alle Tasten die ich brauche zu verwenden Problem war
das bei den Button Objekten die Eigenschaft TABSTOP auf false gesetzt werden muß
und ich keinen Button mit der Maus anklicken darf da sonst wieder ein Focus gesetzt
wird und die Pfeiltasten dadurch belegt sind. Macht aber nichts in meiner Orginal
Anwendung hab ich keine Maus.
Zu Lazarus ich werd es mir heute mal angucken da es ja ähnlich aufgebaut ist wie Kylix und
auch mit Delphi geschrieben wird. Weil eigentlich will ich in drei Wochen mit dem Projekt
fertig sein und Kylix ist schon die zweite Entwicklungsumgebung die ich verwende vorher
hab ich mit QT. Werd mich dann heut mittag noch mal melden wie es war.
MfG
Ingo
-
Hallo
Scheint ganz gut zu sein soweit ich es unter Windows gesehen habe.
Aber wie bekomme ich es jetzt unter Linux(Knoppix) installiert war auf dieser Seite
http://sourceforge.net/project/showf...oup%20id=89339
und hab mir alle Lazarus Linux i386 DEB Lazarus 0.9.22 heruntergeladen und versucht
sie über den Packagemanager zu installieren hat bis auf die lazarus_0.9.22-1_i386.deb
Datei auch geklappt aber bei der bekomm ich immer ne Fehlermeldung.
Ein Lazarus Icon ist auch schon im Entwicklungs Ordner aber ich kann es halt nicht
aufrufen. Was mach ich falsch oder wie installier ich es einfacher.
PS: komm nur über Windows ins Netz unter Linux geht´s leider nicht.
MfG
Ingo1
-
Also irgendwie hab ich es doch zum laufen bekommen aber wenn ich ein Program starten will schreibt Lazarus immer FATALER FEHLER Can´t find glib Unit
wo bekomm ich die her oder wie kann ich den Fehler beseitigen?
MfG
Ingo1
-
29.08.07 16:23 #8
- Registriert seit
- Mar 2007
- Beiträge
- 95
Also mit Lazarus unter Linux muß ich mal bei mir schauen. Bei mir läuft es unter RedHat und auch Debian.
Knoppix ist im Prinzip Debian, so daß dort normalerweise mit apt-get install <Paketname> installiert wird. Das funktioniert natürlich am besten im Netz, da dann auch gleich alle Abhängigkeiten aufgelöst werden. Aber wie gesagt da müßte ich noch mal nachschauen.
TabStop mußt Du nur auf False setzen, wenn Du die Tabulartotaste zum navigieren nutzen möchtest, das kann aber auch auf True stehen habe ich zumindest ausprobiert.
Um zu umgehen, das der Button beim Drücken einer Pfeiltaste oder der Entertaste aktiviert wird, mußt Du nur verhindern, das der Button den Focus erhält. Dazu schmeißt Du ein Editfeld auf das Formular und srtz Height und Width jeweils auf 0 - dadurch ist es unsichtbar. Das Feld nicht mit visible auf unsichbar schalten sonst krachts!
Dann kommt noch ein Timer auf das Formular. Den Timertick setzt Du auf ca. 50ms Die onTimer-Procedur sollte wie folgt aussehen:
Code :1 2 3 4 5 6 7 8 9
procedure TForm1.Timer1Timer(Sender: TObject); begin if Button1.Focused then begin try Edit1.SetFocus; except end; end end;
Hierdurch erhält das nicht sichbare Editfeld den Focus, wenn der Button1 den Focus hat und Button1 verliert demzufolge den Focus. So kannst Du auch mit anderen Objekten verfahren indem Du deren Focus auf das nicht sichbare Editfeld umlenkst.
Zwar nicht super elegant - aber funktioniert. Du kannst dann Maus oder Taste benutzen und außerdem entfällt auch der Focusrahmen des Buttons.
-
Hallo
Habs geschafft in der Datei /etc/fpc.cfg waren falsche links angegeben danach konnte
ich mein Programm starten ist zwar noch nicht ganz so weit wie unter Kylix aber mal
sehen.
Jetzt hab ich aber ein neues Problem wenn ich in die Image Objekte ein Bild laden möcht und das Program dann ausführen will,
bekomme ich folgende Fehlermeldung:
Konnte VideoForm nicht streamen: TVideoForm Invalid horizontal pixel Index-1
Was hat das zu bedeuten? Und wie kann ich meine Bilder darstellen?
Trotzdem hab ich aber versucht das Programm auf einem anderen Rechner laufen zu lassen, doch das funktionierte leider nicht.
Ich hab den kompletten Projectordner auf meinen USB-Stick kopiert, von dem ich auf dem Zielrechner Knoppix Booten lasse. Und erst sah auch alles gut aus eine 7MB große Ausführbare Datei war dabei.Doch als ich dann Knoppix auf dem Zielrechner gebootet habe und in den Projectordner gegangen bin ist diese Datei auf einmal eine 7MB große Einfacher Text Datei.
Muß ich noch irgend was vorher machen damit ich das Progam ausführen kann?
Wenn ja was?
MfG
IngoGeändert von Ingo1 (30.08.07 um 15:41 Uhr)
-
30.08.07 21:36 #10
- Registriert seit
- Mar 2007
- Beiträge
- 95
Also, daß aus dieser Binärdatei plötzlich eine Textdatei wird mag ich nicht so richtig glauben. Aber sei's drum. Läuft denn diese Datei auf dem System wo Du sie kompiliert hast und zwar ohne IDE (also Lazarus bzw. Kylix). Ist die Datei wirklich ausführbar - mit
überprüfen. Versuch mal die Datei von einem Terminalfenster aus zu starten, dann siehst Du eventuelle Fehlermeldungen. Denk dran wenn Du im Verzeichnis bist mußt Du die Datei mit ./Datei starten.ls -l Datei
Wieso ist Deine Datei überhaupt so groß. 7MB ist ein Haufen Holz. Ich arbeite derzeit an einem sehr großen Projekt (allerdings unter Windows mit Delphi) da ist die kompilierte EXE ca. 4,5MB (gepackt sogar nur 1,2MB) groß. Dabei ist zu bedenken, daß das Hauptprogramm aus über 100 selbst erstellten Units erzeugt wird, wobei die Hauptunit ca. 6500 Programmzeilen umfaßt und noch einige Units mit über 2000 Zeilen dabei sind. Hinzu kommt noch der Code der durch die benutzten Komponenten eingebunden wird.
Hast Du ganze Filme oder riesige Bitmaps eingebunden
Was für Image Objekte hast Du denn Poste mal ein bischen Quelltext Damit man besser nachvollziehen kann, was Du da machst.
-
Hallo
Also das mit der Einfachen Textdatei war wohl irgend ein kopierfehler denn als ich den
Ordner noch mal Kopiert habe und Knoppix auf dem Zielsystem gebootet habe ist die
Ausführbare Datei immer noch da gewesen na ja keine Ahnung warum es beim ersten
mal nicht geklappt hat.
Hab unter dem Entwicklungssystem mal deinen Befehl
"ls -l Videoproject "
eingegeben und folgende ausgabe bekommen:
-rwxr-xr-x 1 root root 2646420 2007-08-31 7:29 Videoproject
Vorher hab ich die Datei mit dem Befehl
"strip Videoproject "
auf 2,5MB verkleinert. Doch als ich dann die Ausführbare Datei auf dem Zielsystem
starten wollte ging es immer noch nicht und habe folgende Fehlermeldung bekommen:
./Videoproject:error while loading shared libraries: libgdk_pixbuf.so.2: cannnot open sharec object file: No such file or directory
was muß ich tun? Muß ich da doch noch ne Library linken wenn ja wie?
Ich hab ein Timage Object benutzt hier der Anfangscode meiner VideoUnit danach
kommen nur noch proceduren der verschiedenen Buttons.
PHP-Code:unit VideoUnit;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, Buttons,
StdCtrls, ExtCtrls;
type
{ TVideoForm }
TVideoForm = class(TForm)
LeftButton: TSpeedButton;
SplitImage1: TImage;
SplitImage: TImage;
MasterImage: TImage;
StatusLabel: TLabel;
ZoomButton1: TSpeedButton;
ZoomButton2: TSpeedButton;
IrisButton1: TSpeedButton;
IrisButton2: TSpeedButton;
FocusButton1: TSpeedButton;
FocusButton2: TSpeedButton;
UpButton: TSpeedButton;
DownButton: TSpeedButton;
RightButton: TSpeedButton;
TotalzoomButton: TSpeedButton;
WeitwinkelButton: TSpeedButton;
ScanYButton: TSpeedButton;
ScanXButton: TSpeedButton;
HoldButton: TSpeedButton;
SplitscreenButton: TSpeedButton;
WartungsButton: TSpeedButton;
ZahnradButton: TSpeedButton;
StepsButton: TSpeedButton;
procedure ZoomButton1Click(Sender: TObject);
procedure SplitscreenButtonClick(Sender: TObject);
procedure WartungsButtonClick(Sender: TObject);
procedure StepsButtonClick(Sender: TObject);
procedure ZoomButton2Click(Sender: TObject);
procedure IrisButton1Click(Sender: TObject);
procedure IrisButton2Click(Sender: TObject);
procedure FocusButton1Click(Sender: TObject);
procedure FocusButton2Click(Sender: TObject);
procedure WeitwinkelButtonClick(Sender: TObject);
procedure TotalzoomButtonClick(Sender: TObject);
procedure UpButtonClick(Sender: TObject);
procedure DownButtonClick(Sender: TObject);
procedure LeftButtonClick(Sender: TObject);
procedure RightButtonClick(Sender: TObject);
procedure ZahnradButtonClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure HoldButtonClick(Sender: TObject);
procedure ScanXButtonClick(Sender: TObject);
procedure ScanYButtonClick(Sender: TObject);
procedure FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
private
{ private declarations }
public
{ public declarations }
end;
var
VideoForm: TVideoForm;
implementation
{ TVideoForm }
var p,h,t,m,s,z,i,f,b,e,bereich:Byte;
estr,zstr,istr,fstr,bstr:String;
procedure TVideoForm.SplitscreenButtonClick(Sender: TObject);
begin
p:=p+1;
if (StepsButton.Visible) then StepsButtonClick(Sender);
if (ZahnradButton.Visible) then ZahnradButtonClick(Sender);
if p=2 then
begin
StatusLabel.Caption:='Splitscreen Funktion';
SplitscreenButton.Visible:=true;
SplitImage1.Show;
p:=0;
end
else
begin
StatusLabel.Caption:='';
SplitscreenButton.Visible:=false;
SplitImage1.Hide;
end;
end;
-
31.08.07 11:25 #12
- Registriert seit
- Mar 2007
- Beiträge
- 95
Also:
1. Du hast jede Menge Images in Deiner Form, die so vermute ich mal, recht groß sind. Daher kommt dann auch die Dateigröße. Hier solltest Du vielleicht überlegen, ob Du diese dynamisch also nur dann anlegst, wenn Du sie benötigst. Zweite Frage ist eigentlich benötigst Du immer das TImage-Objekt oder brauchst Du die Objekte eigentlich nur um mal ein paar Images zwischen zu speichern. Wenn es letzeres ist, dann benutze lieber TBitmap, TPicture, TMetafile oder TGraphics. Dies sind nicht visuelle Klassen und wenn Du diese dyn. erzeugst brauchen sie deutlich weniger Speicher. Wenn Du sie anzeigen möchtest, dann kannst Du sie ja in ein TImage-Objekt kopieren. Wie so was geht findest Du hier http://www.swissdelphicenter.ch/de/grafik.php und noch jede Menge andere Tips zum Thema Grafik. Außerdem würde ich, wenns denn mal läuft alle großen Grafiken aus externen Dateien laden und nicht im Programm selbst speichern - das ist aber Ansichtskarte.
2.Hier versuchst Du auf was zuzugreifen, was es nicht gibt. Das kann z.B. in einer for-Schleife passieren, wenn Deine Laufvariable zu groß oder zu klein wird.Konnte VideoForm nicht streamen: TVideoForm Invalid horizontal pixel Index-1
Was ich damit sagen will ist überprüfe mal ob alle Laufvariable richtig initialisiert werden, ob Abbruchbedingungen von Schleifen richtig gesetzt sind. Wie lädst Du denn die Bilder in die Imageobjekte? Normalerweise sollte es soCode :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Beispiel: var A : array[0..2] of Byte; procedure Beispiel var i : integer; begin //Folgelzeile wird funktionieren for i:=0 to 2 do showmessage(inttostr(A[i])); //diese auch for i:=1 to 2 do showmessage(inttostr(A[i])); //diese nicht for i:=0 to 3 do showmessage(inttostr(A[i])); //und diese auch nicht for i:=-1 to 2 do showmessage(inttostr(A[i])); end;
gehen. Es könnte auch sein, daß Du irgendwo eine Variable zu klein dimensioniert hast. Deinem Quelltext entnehme ich, daß Du ausschließlich Byte benutzt. Denk dran, daß diese nur von 0-255 gehen. Wenn Du dann einer solchen Variable eine größere oder kleinere Zahl während der Laufzeit zu weist kracht es. Mit dem Debugger bekommt man aber sowas raus. Und dann sieht Dein Quelltext so aus, daß Du Laufvariable global deklarierst (z.B. das p in Deiner Procedur). So was ist kreuzgefährlich, weil dann die Variablen unkontrolliert geändert werden könnten. In Deiner Procedur z.B schon gleich hierCode :1
Image1.Picture.LoadFromFile(...
Deklariere solche Variable nur lokal in der Procedur selbst. Wenn Du Variablen gezielt global verändern willst dann übergeb sie mit dem Procedurkopf und wenn Du diese auch wieder weiterverarbeiten möchtest, dann nehme var Parameter für Proceduren oder benutze Funktionen. Ich glaube, daß Du so ein bischen die Übersicht verloren hast, wo welche Variable wie verändert wird. Also: Verwende globale Variable wirklich nur dort wo Du sie wirklich brauchst. Ansonsten benutze lokale Variable. Es spricht nichts dagegen, wenn Du in jeder Procedur eine Variable p declarierst. Das Prog wird dadurch nicht signifikant größer.Code :1
if (StepsButton.Visible) then StepsButtonClick(Sender);
3.
Ja ist doch klar: Das Programm findet die Library libgdk_pixbuf.so.2 nicht. D.h. im Klartext, Du mußt, wenn Du das Programm weitergibst dafür Sorge tragen, daß obige Lib auf dem System vorhanden ist. Dann könnte sich die Lib natürlich auch in einem Pfad befinden der nicht in $LD_LIBRARY_PATH steht. Du kannst ganz einfach herausfinden gegen welche Libs Dein Programm gelinkt ist. Mache mal ein:./Videoproject:error while loading shared libraries: libgdk_pixbuf.so.2: cannnot open sharec object file: No such file or directoryJetzt mußt Du bei der Installation nur noch abprüfen ob die Libs auf dem Zielsystem vorhanden sind. Notfalls mußt Du Sie nachinstallieren oder die Programminstallation verweigern.Code :1
ldd Videoprojekt
-
Hallo
Sorry das ich mich erst jetzt wieder melde hatte viel zu tun.
Hab aber eigentlich fast alle Probleme beheben können das Program läuft auf dem
Zielsystem nachdem ich das fehlende Packet eingebunden habe. Das die Bilder nicht
dargestellt werden ist auch nicht so problematisch ich werd Sie später in der laufzeit
einbinden.
Das einzige was mir noch Probleme bereitet ist das mit dem CopyRect Befehl könntest
du mir da mal ein kleines Beispiel zweigen?
Will ja immer noch aus TImage Object ein Rechteck rauskopieren was genau so groß ist
wie TImage1 Object, und dieses Rechteck soll dann auch in TImage1 Object eingefügt
werden.Muß irgendwie mit
Image.Picture.Bitmap.Canvas.CopyRect(rect2,image1.Picture.Bitmap.Canvas,rect)
funktionieren aber ich weiß immer noch nicht wie entweder steh ich auf dem Schlauch
oder das ist zu hoch für mich.
MfG
Ingo
-
03.09.07 19:58 #14
- Registriert seit
- Mar 2007
- Beiträge
- 95
Um nicht das Rad noch mal zu erfinden hier die genaue Beschreibung des CopyRect- Befehls aus der Delphihilfe
Und dazu das Beispiel aus der Hilfe:TCanvas.CopyRect
Die Methode CopyRect kopiert einen Teil eines Bildes aus einer anderen Zeichenfläche in die Zeichenfläche.
procedure CopyRect(Dest: TRect; Canvas: TCanvas; Source: TRect);
Beschreibung
Mit CopyRect können Sie einen Teil eines Bildes aus einer anderen Zeichenfläche in das Bild des TCanvas-Objekts kopieren. Die Eigenschaft Dest legt fest, in welches Rechteck innerhalb der Zeichenfläche das Quellbild kopiert werden soll. Der Parameter Canvas gibt die Zeichenfläche an, die das zu kopierende Bild enthält. Source legt das Rechteck fest, das den zu kopierenden Teil der Zeichenfläche enthält.
Der Kopiervorgang erfolgt in dem Modus, der durch CopyMode festgelegt ist.
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14
Das folgende Beispiel illustriert die Unterschiede zwischen CopyRect und BrushCopy. Die Bitmap-Grafik ‘TARTAN.BMP’ wird in das Objekt Bitmap geladen und auf der Zeichenfläche von Form1 dargestellt. BrushCopy ersetzt die Farbe Schwarz in der Grafik mit dem Wert des Pinsels (Brush) der Zeichenfläche. Im Gegensatz dazu läßt CopyRect die Farben unverändert. var Bitmap: TBitmap; MyRect, MyOther: TRect; begin MyRect := Rect(10,10,100,100); MyOther := Rect(10,111,100, 201); Bitmap := TBitmap.Create; Bitmap.LoadFromFile('c:\windows\tartan.bmp'); Form1.Canvas.BrushCopy(MyRect,Bitmap, MyRect, clBlack); Form1.Canvas.CopyRect(MyOther,Bitmap.Canvas,MyRect); Bitmap.Free; end;
Für Dein Beispiel könnte das ganze dann so aussehen:
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
procedure TForm1.CopyImage(OffsetX, OffsetY : cardinal); var DestRect : TRect; //Position und Größe des Zielrechtecks - entspricht der Größe von Image1 SourceRect : TRect; //Position und Größe des zu kopieren Rechtecks (Quelle) a, b : cardinal; // begin DestRect.Left:=0; DestRect.Top:=0; DestRect.Right:=Image1.ClientWidth; DestRect.Bottom:=Image1.ClientHeight; //der Ausschitt der kopiert werden soll ist so groß wie Image1 //mit dem Offset kann man den Startpunkt verschieben; SourceRect.Left:=OffsetX; SourceRect.Top:=OffsetY; SourceRect.Right:=OffsetX+Image1.ClientWidth; SourceRect.Bottom:=OffsetY+Image1.ClientHeight; //Hier evtl. noch prüfen, daß SourceRect nicht größer als //Image selbst Image1.Canvas.CopyRect(DestRect,Image.Canvas,SourceRect); end;
-
Danke es funktioniert
Ähnliche Themen
-
Projekt: automatisierte Anwendung für die Bürokommunikation mit Hilfe von VBA!
Von breee im Forum Visual Basic 6.0Antworten: 6Letzter Beitrag: 24.01.11, 09:18 -
Hilfe! Java Anwendung läuft nicht.
Von BFreakout im Forum JavaAntworten: 0Letzter Beitrag: 26.10.06, 12:27 -
Benötige Hilfe in einer Server Client Anwendung
Von Silvercreast im Forum .NET Web und KommunikationAntworten: 1Letzter Beitrag: 24.10.05, 09:51 -
Hilfe PocketPC-Anwendung
Von theartmix im Forum .NET ArchivAntworten: 4Letzter Beitrag: 07.04.05, 13:35 -
Kleine Hilfe zu einer SDI anwendung
Von LoKi1 im Forum VisualStudio & MFCAntworten: 6Letzter Beitrag: 13.01.05, 11:56





Zitieren
Login





