DrawingArea in Gambas 3

Alle Fragen zur Programmierung

DrawingArea in Gambas 3

Beitragvon Alter VB6er » Do 10. Mai 2012, 18:08

In Gambas 2 konnte man einfach durch einen Button einige Punkte in eine DrawingArea zeichen.

Codebeispiel
Code: Alles auswählen
PUBLIC SUB Button1_Click()

  Draw.Begin(DrawingArea1)
Draw.Point(100, 100)
Draw.Point(100, 101)
Draw.Point(100, 102)
Draw.Point(100, 103)
Draw.Point(100, 99)
Draw.Point(100, 98)
Draw.Point(100, 97)
Draw.Point(100, 96)
Draw.Point(100, 95)
Draw.Point(100, 94)
Draw.Point(100, 93)
Draw.Point(100, 92)
Draw.Point(100, 91)
Draw.Point(100, 90)
Draw.Point(100, 89)
Draw.Point(100, 88)
Draw.End

END


In Gambas 3 ist dies leider nicht mehr möglich. Was hat sich im Unterschied zu Version 2 beim DrawingArea geändert?
Alter VB6er
Foriker
 
Beiträge: 7
Registriert: Do 10. Mai 2012, 18:00

Re: DrawingArea in Gambas 3

Beitragvon tux_ » So 13. Mai 2012, 08:32

Hi,

kurzum: vieles.
In GB3 kann man nurnoch im Draw()-Event der DrawingArea in sie zeichnen. Das wird immer ausgelöst, wenn die DrawingArea denkt, sie muesse neu gezeichnet werden... Du kannst es allerdings machen, wie ich, der ich auch nicht so erbaut von diesem Draw()-Event bin, und DrawingArea.Cached = True setzen, dann kannst du die DrawingArea auch wieder als Device fuer Draw.Begin() verwenden.

MfG,
tux_
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
tux_
Site Admin
 
Beiträge: 941
Registriert: Di 11. Nov 2008, 20:05

Re: DrawingArea in Gambas 3

Beitragvon Alter VB6er » Do 17. Mai 2012, 19:41

Hi,

danke genau das suchte ich.
MfG

Alter VB6er
Alter VB6er
Foriker
 
Beiträge: 7
Registriert: Do 10. Mai 2012, 18:00

Re: DrawingArea in Gambas 3

Beitragvon Rolf-Werner » So 20. Mai 2012, 08:20

Bei mir hat das übrigens tierisch gehakt, ich habe eine Suse12.1 32 bit auf meinem Lappi und darauf Gambas3. Ich habe beides versucht, mit Cache und ohne, und unter KDE4 will es einfach nicht zeichnen, also es erscheint nichts auf der DrawingArea... Unter GTK (LxDE) kein Problem, aber deshalb hab ich erstmal die Finger davon gelassen und mein neues Projekt mit Gambas2 angefangen, da läuft alles problemlos.

Auf die Dauer werd ich aber zu Gambas3 wechseln müssen, wäre schon wegen der Druckfunktion notwendig.

Habt ihr auch solche Beobachtungen gemacht?

Rolf
Rolf-Werner
Foriker
 
Beiträge: 18
Registriert: Sa 7. Apr 2012, 19:55

Re: DrawingArea in Gambas 3

Beitragvon saarcarmen » So 19. Aug 2012, 02:39

Also wirklich!

Habe nun auf meinen Mint 13 KDE die neue IDE Gambas 3.2.1 installiert und ein altes Projekt exportiert.

Im Prinzip alles kein Problem... aber wer Drucken will muss das Draw Objekt durch Paint ersetzen! :cry:

Habe heute die ganze Nacht daran gearbeitet :?

Da vergeht einem die Lust auf Gambas3 zu migrieren. Oder wie seht ihr das?


PS: Vor allen Dingen ist es mit Paint nicht einfacher geworden - eher aufwendiger!
saarcarmen
Foriker
 
Beiträge: 7
Registriert: Do 7. Jan 2010, 04:02

Re: DrawingArea in Gambas 3

Beitragvon Honsek » Mo 27. Aug 2012, 13:19

Hallo SaarCarmen,

die Probleme bei der Umstellung von GB2 auf GB3 und deren Weiterentwicklung spüren wir als Autoren eines Online-Buches für Gambas besonders. Es vergeht kaum eine Woche, in der wir nicht wieder Text ändern oder ergänzen oder die Beispiel-Projekte anpassen müssen. Man mag das kritisieren, aber so eine Sprache wie Gambas 3 ist in einem sich dynamisch entwickelnden Prozeß, der auch von Veränderungen in Linux nicht abgekoppelt werden kann. Der Aufwand der Anpassungen ist z.T. erheblich, da wir die Buchvariante und das Online-Buch synchron pflegen.

Ich bin sicher, dass man in absehbarer Zeit ein hinreichend stabiles Gambas 3 nutzen kann.

Mit freundlichem Gruß

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Benutzeravatar
Honsek
Foriker
 
Beiträge: 330
Registriert: Do 4. Okt 2007, 17:01

Re: DrawingArea in Gambas 3

Beitragvon saarcarmen » Di 28. Aug 2012, 22:58

Hallo, ich arbeite nun erst seit 2 Wochen mit GB3 und kann sagen das es stabil läuft. Die Qt4 GUI gefällt natürlich und dank PPA ist GB3 ja auch auf vielen Ubuntu/Mint Rechner leicht zu installieren. GB2 und GB3 rennen sogar ohne Probleme zusammen auf dem gleichen PC.

Auf dem ersten Blick - abgesehen vom drucken - sieht GB3 schon ganz gut aus 8-)

Beim Thema Drucken hat mir diese Seite geholfen: gambasdoc.org/help/howto/print

Das "The Paginate event" konnte ich bisher noch nicht nachvollziehen. Benötige ich derzeit auch nicht, da ich weiß wie viele Seiten ich drucken will (z.B. je Seite 40 Zeilen).

LG Saarcarmen
saarcarmen
Foriker
 
Beiträge: 7
Registriert: Do 7. Jan 2010, 04:02

Re: DrawingArea in Gambas 3

Beitragvon Honsek » Mo 17. Sep 2012, 08:04

Hallo SaarCarmen,

offensichtlich gehört das Drucken unter Gambas nicht zu den Themen "... wie man leicht sieht,...". Der genannte Artikel ist aber ein Blick in die richtige Richtung. Gegenwärtig experimentiere ich noch mit dem Druckprogramm aus den Beispielen von Gambas und erkunde die Grundeinstellungen (Default) für meinen Drucker. Folgende Abfragen bringen die u.a. Ergebnisse:

Print "DruckerName = ";; prtText.Name
Print "CollateCopies = ";; prtText.CollateCopies
Print "Count = ";; prtText.Count
Print "Duplex = ";; prtText.Duplex
Print "FirstPage = ";; prtText.FirstPage
Print "FullPage = ";; prtText.FullPage
Print "GrayScale = ";; prtText.GrayScale
Print "LastPage = ";; prtText.LastPage
Print "NumCopies = ";; prtText.NumCopies
Print "Orientation = ";; prtText.Orientation
Print "OutputFile = ";; prtText.OutputFile
Print "Paper (2=DINA4) = ";; prtText.Paper
Print "PaperHeight (mm) = ";; prtText.PaperHeight
Print "PaperWidth (mm) = ";; prtText.PaperWidth
Print "Resolution (DPI) = ";; prtText.Resolution
Print "ReverseOrder = ";; prtText.ReverseOrder

DruckerName = FS-1030D
CollateCopies = False
Count = 1
Duplex = 0
FirstPage = 0
FullPage = False
GrayScale = True
LastPage = 0
NumCopies = 1
Orientation = 0
OutputFile =
Paper (2=DINA4) = 2
PaperHeight (mm) = 297
PaperWidth (mm) = 210
Resolution (DPI) = 1200
ReverseOrder = False

In der Prozedur - hier ein Ausschnitt:

Code: Alles auswählen
Public Sub prtText_Draw()

  Dim PRINT_MARGIN As Float = Paint.Width / prtText.PaperWidth * 10
 
  Print "Rand = ";; PRINT_MARGIN
  Print "Paint.Weite = ";; Paint.Width
  Print "Paint.Höhe = ";; Paint.Height

  ... 
End

verstehe ich nicht, warum in der Berechnung für den Rand der Faktor 10 benutzt wird. Ist das eine Konstante? Kann jemand erklären, in welcher Einheit sowohl Paint.Width als auch Paint.Height gemessen werden? Diese Ergebnisse werden angezeigt:

Rand = 453,190476190476
Paint.Weite = 9517
Paint.Höhe = 13700


Mit freundlichem Gruß

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Benutzeravatar
Honsek
Foriker
 
Beiträge: 330
Registriert: Do 4. Okt 2007, 17:01

Re: DrawingArea in Gambas 3

Beitragvon saarcarmen » Mo 24. Sep 2012, 18:46

verstehe ich nicht, warum in der Berechnung für den Rand der Faktor 10 benutzt wird


Denke mit "FullPage = True" kannst du das abstellen? Gekürztes Beispiel um eine PDF zu erstellen:

Code: Alles auswählen
  If myPrinter.Configure() = True Then Return

  With myPrinter
    .FullPage = True
    .FirstPage = 0
    .LastPage = 0 'all pages will be printed
    .Orientation = myPrinter.Portrait
    .Paper = myPrinter.A4
    .Resolution = 600
    .NumCopies = 1
    .OutputFile =  User.Home & "/test.pdf"
    .Print 'start the printing process
  End With
saarcarmen
Foriker
 
Beiträge: 7
Registriert: Do 7. Jan 2010, 04:02

Re: DrawingArea in Gambas 3

Beitragvon Honsek » Di 25. Sep 2012, 16:40

Guten Tag SaarCarmen,

Danke für die Anregungen. Ich habe das Original-Druckprogramm aus den Gambas-Beispielen adaptiert - nur für den Ausdruck von Bildern, um die Klasse Printer zu testen. Es wäre schön, wenn das Programm mal mit anderen Druckern getestet würde. Kommentare sind willkommen, werden gelesen und umgehend beantwortet. Das Programm druckt Bilder aus einer Bilddatei in Farbe oder in Graustufen auf A4 einwandfrei. Die Ränder stimmen und auch die Bildgrößen. Die Ränder für links (25mm) und oben sind gegenwärtig fest vorgegeben und die Bild-Größen werden nur dann skaliert, wenn das erforderlich ist.

Das "The Paginate event" konnte ich bisher noch nicht nachvollziehen. Benötige ich derzeit auch nicht, da ich weiß wie viele Seiten ich drucken will (z.B. je Seite 40 Zeilen).

Fragen: Das bezieht sich doch sicher auf einen ASCII-Text wie zum Beispiel Gambas-Quelltext? Könnstest Du beschreiben, wie Du die Seitenzahlen aus dem zu druckenden Text ermittelst? Werden die Seitenzahlen auch mit ausgedruckt? Wenn JA, wie realisierst Du das (Quelltext)?

Mit freundlichem Gruß

Honsek
Dateianhänge
CPrinterImage-1.0.35.tar.gz
Druck-Programm für Bilder
(15.9 KiB) 246-mal heruntergeladen
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Benutzeravatar
Honsek
Foriker
 
Beiträge: 330
Registriert: Do 4. Okt 2007, 17:01

Re: DrawingArea in Gambas 3

Beitragvon saarcarmen » Do 27. Sep 2012, 21:35

Hallo Gambas3 Freunde!

Ich drucke derzeit nur Tabellen (GridView) per dirty code. Mit Event Begin legst du die Seitenanzahl fest, z.B. alle 20 Zeilen eine Seite. Das kann dann so aussehen:
Code: Alles auswählen
Public Sub myPrinter_Begin()
    intPageRow = 20
    intRechRows = grvRech.Rows.Count - 1
    myPrinter.Count = Round(intRechRows / intPageRow, 1)
End


und im Event Draw kannst du dann einfach per IF, LOOP oder CASE die Seite abfragen.

simple: "if myPrinter.Count = 1 then ..." die ersten 20 Reihen der Tabelle ausdrucken, usw.
saarcarmen
Foriker
 
Beiträge: 7
Registriert: Do 7. Jan 2010, 04:02

Re: DrawingArea in Gambas 3

Beitragvon Honsek » Mi 3. Okt 2012, 12:07

Guten Tag SaarCarmen,

Dank für die groben Hinweise, aber mir fehlt der Durchblick, wie man ohne die Methode 'NeueSeite' einen ganz normalen Text (ASCII) auf mehrere Seiten druckt. Jede neue Seite soll oben eine Kopfzeile haben und alle weiteren Zeilen eine Zeilennummer. Ich finde einfach keinen vernünftigen Ansatz. Kannst Du helfen; u.U. mit einem vollständigen Quelltext aus einem Druckprojekt?

Mit freundlichem Gruß

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Benutzeravatar
Honsek
Foriker
 
Beiträge: 330
Registriert: Do 4. Okt 2007, 17:01

Re: DrawingArea in Gambas 3

Beitragvon gambasso » Do 4. Okt 2012, 14:41

hallo zusammen,

mich interessiert auch das Drucken unter Gambas. Ausser über das mitgelieferte Beispiel und dem Beitrag von Honsek habe ich noch nichts ausgedruckt bekommen.
(In dem Beispiel musste ich eine Zeile löschen, die wollte mein PC nicht.
>iPrinterDPI = Mid(sResultRow, iPosition + 2, -4) ' FS-1030D = 600 dpi<)

Ich möchte erst einmal den Inhalt eines oder mehrerer Strings, also Text ausdrucken.

Frage an Honsek, Du hast Druckereigenschaften ausgedruckt.
Könntest Du für dieses Beispiel den Quelltext mir zukommen lassen?
Ich habe ein Brother DCP-195C Drucker.

Gruss
Gruss
gambasso
Foriker
 
Beiträge: 801
Registriert: Sa 17. Mär 2012, 09:55

Re: DrawingArea in Gambas 3

Beitragvon Honsek » Do 4. Okt 2012, 18:00

Hallo Gambasso,

kann ich davon ausgehen, dass mein Bilder-Druckprogramm Deine Bilder ordentlich ausdruckt? Da bitte ich noch einmal um eine konkrete Antwort oder Testergebnisse bevor der entsprechende Artikel im Online-Buch erscheint.

    War der angegebene Fehler mit der von Dir monierten Zeile der einzige Fehler oder gab es weitere?
    Welche Fehlermeldung gab es? Bitte teile mir das genau mit, damit ich weitere Untersuchungen anstellen kann.

Ja, die Zeile

Code: Alles auswählen
iPrinterDPI = Mid(sResultRow, iPosition + 2, -4) ' FS-1030D = 600 dpi)

ist experimentell und fliegt eventuell raus, da sie nur für meinen Drucker relevant zu schein scheint und wird dann schlicht und ergreifend durch folgenden Prozedurinhalt ersetzt:

Code: Alles auswählen
Public Sub GetPrinterResolution()
  iPrinterDPI = printerImage.Resolution
End ' GetPrinterResolution()

Ich möchte erst einmal den Inhalt eines oder mehrerer Strings, also Text ausdrucken.

Ich bin gegenwärtig dabei auch Texte ordentlich zu drucken. Es sollen nur einfache ASCII-Texte sein wie zum Beispiel Inhalte aus einer TextArea. Schau mal hier http://www.gambas-buch.de/dw/doku.php?i ... 23.6:start nach, da gibt es auch was zum Drucken. Mein Hauptproblem ist immer noch das Realisieren des Seitenwechsels. Aber ich hoffe auf gute Nachrichten von SaarCarmen, die helfen sollten.

Mit freundlichem Gruß

Hans
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Benutzeravatar
Honsek
Foriker
 
Beiträge: 330
Registriert: Do 4. Okt 2007, 17:01

Re: DrawingArea in Gambas 3

Beitragvon gambasso » Do 4. Okt 2012, 18:24

Hallo Hans,

ich werde Dir in Kürze berichten, heute schaffe ich es nicht mehr.

So weit schon mal, gedruckt hat er gut, die auskommentierte Zeile hat nichts gemacht, was ich bemerkt hätte.

Viele Grüße

Klaus
Gruss
gambasso
Foriker
 
Beiträge: 801
Registriert: Sa 17. Mär 2012, 09:55

Nächste

Zurück zu Programmierung

Wer ist online?

Mitglieder in diesem Forum: Google [Bot] und 1 Gast

cron