Canvas.CopyRect unter Linux. Der Kreis bewegt sich nicht.

Für Fehler in Lazarus, um diese von anderen verifizieren zu lassen.
Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

monta hat geschrieben: @mumie, da wird dir nichts anderes übrig bleiben, als zu warten, ob der Bug in nächster Zeit behoben wird
Naja, Ein Bitmap mit Draw(X,Y..) auf den Canvas pappen tut den gleichen Zweck.
BitBlt funzt auch unter GTK, allerdings nicht wenn SrcHDC und DestHDC identisch sind afaik.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ich glaube fast, darum geht auch copyrect nicht, ich habe mir zwar den Quellcode dazu angeschaut, aber trotzdem glaube ich es !
MFG
Michael Springwald

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

so, hier ist ein Beispiel was ich heute in 10 Minuten erstellt habe, wo copyRect geht.
schaut es euch mal an.
Dateianhänge
Game1.zip
(64.56 KiB) 87-mal heruntergeladen
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

@Pluto: Ja, so "geht" das, aber mehr als Draw(X,Y...) kann das auch nicht.
CopyRect funktioniert total chaotisch unter GTK.

Probier mal den hier (in deinem Code):
PaintBox1.Canvas.CopyRect(rect(0,0,PaintBox1.Width,PaintBox1.Height),buffer.canvas,rect(1,1,PaintBox1.Width,PaintBox1.Height));
Dann ist wieder aus der Traum.

Oder das:
PaintBox1.Canvas.CopyRect(rect(80,80,200,200),buffer.canvas,rect(0,0,PaintBox1.Width,PaintBox1.Height));
Hier wird gestretcht!

Also ich lasse lieber die Finger davon.


EDIT: Sorry, das stretching ist möglicherweise korrekt. Wusste ich nicht.
Also kurz gesagt: Wenn das Quell-Rechteck nicht bei 0,0 beginnt, funktioniert's nicht mit GTK. Damit ist CopyRect aber witzlos.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

seltsam...... und was ist mit BitBtl ?
ich vergesse jedes mal wo diese Funktion Defniert wurde.....

wobei ich nutzte glaube ich CopyRect auch bei meinem Paint2 Programm.
Und zwar auch mit anderen werten als 0,0,w,h
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

BitBlt geht.

z.B. in deinem Code:
uses .... LCLIntf, LCLType;
BitBlt(PaintBox1.Canvas.Handle, 70,70,50,50,buffer.canvas.handle,20,30,SRCCOPY);

mumie
Beiträge: 9
Registriert: Mi 15. Nov 2006, 18:46

Beitrag von mumie »

Der Fehler ist offenbar schon länger bekannt. Jetzt habe ich das hier gefunden:

http://www.freepascal.org/mantis/view.php?id=2062" onclick="window.open(this.href);return false;

Ich hatte vorher nachgesehen. Aber ich hatte es nicht gefunden.

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Da geht's aber um Transparenz. Ich glaube kaum, dass es dasselbe Problem ist.
Jedenfalls sollte es mit BitBlt funktionieren

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Es wurde aber auch als Relationship eingetragen.
Johannes

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

naja man könnte jetzt eine zweite Procedere bauen die fast so aufgerufen wird wie CopyRec....
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Herjavater! :shock:
Schade, ich versuche mir auch gerade Delphi/TurboPascal mit dem selben Buch beizubringen. Da werde ich an gleicher Stelle wohl auch Probleme unter Linux haben.

:(
Schade.

(das ist aber keine Kritik oder so - ich find Lazarus/FPC trotzdem genial, denn eigentlich gibt es nix Vergleichbares [RAD, OpenSource, Crossplattform])

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Aber es lohnt sich für dich auf jeden Fall.

Sobald du es kannst, hast du die Möglichkeit dein Programm auf viele Systeme zum Lauf zu bringen. Es ist Natürlich nicht einfach.

Aber wenn du es nur als Hobby machst, so wie ich, dann ist es durchaus vertretbar. oder ?

Aber du weißt ja, jetzt das du statt CopyRect einfach BitBtl nehmen kannst.

Ich meine sogar, das diese Funktion schneller sein dürfte als CopyRect.
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Klar ist es vertretbar! :!:

In der Lernphase ist es für mich nur so, wenn da was schief läuft, das kann einen Lehrling gleich mal derartig aus dem Konzept bringen, dass man sich wirklich schwer tut.
So ist es zumindest bei mir.
Ich weiß, es gibt Leute, die können die MSDN lesen und auf beliebige andere Sprachen ummünzen - sowas bewundere ich! :shock:

Ich kann es leider (noch ?) nicht. Und so geht's mir dann hier eben - man verläuft sich in Problemen, die man kaum versteht. :cry:
Aber es lohnt sich für dich auf jeden Fall.
Klar!
Aber du weißt ja, jetzt das du statt CopyRect einfach BitBtl nehmen kannst.
Ja!

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ich weiß, es gibt Leute, die können die MSDN lesen und auf beliebige andere Sprachen ummünzen
Mach dir nichts draus, ich kann es auch nicht. Es gibt, im Internet meistens genügend Infos über ein Problem. Sogar in Deutsch... was ich recht toll finde :)

Hauptsache, du kannst die Wiki Lesen und Verstehen, von Lazarus.

Aber Viele sachen gehen jetzt schon unter Lazarus. So das du nur auf wenige Probleme stoßen wirst.
MFG
Michael Springwald

Benutzeravatar
theo
Beiträge: 10890
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

bembulak hat geschrieben: In der Lernphase ist es für mich nur so, wenn da was schief läuft, das kann einen Lehrling gleich mal derartig aus dem Konzept bringen, dass man sich wirklich schwer tut.
Ja, das ist schon ein Problem mit dem derzeitigen Zustand der LCL (Is ja gut Chrisitian!).
Ich denke das Lazarus momentan zum Lernen nicht wirklich gut geeignet ist.
Es fehlen massgeschneiderte Hilfetexte und es gibt einfach noch zu viele Ungereimtheiten in der LCL um nach "Rezeptbuch" vorgehen zu können.
Gerade ein Neuling tut sich sehr schwer, zu erkennen wo der Fehler liegt.
Für die ersten Schritte würde ich eher ein Standard Delphi auf Win empfehlen. Es muss nicht mal die neueste Version sein.

Antworten