Seite 3 von 5

Der Parameter [, Depth]) ein Muß???

Verfasst: 14.03.2006 00:52
von Falko
Ohne diesen Parameter läuft wohl nix in PB4B6, oder?

Code: Alles auswählen

CreateImage(0,640,480,32)
Result = CreateImage(#Image, Width, Height [, Depth])

Code: Alles auswählen

GetClipboardImage(#PB_Clipboard_Image,32)
Steht noch nicht in der Hilfe, aber in der Statusleiste!
GetClipboardImage(#Image[,Depth])-Get an image from the clipboard (if any).
Wäre es nicht besser, wenn der Parameter Depth einen Defaultwert erhielte?
Ohne dem geht nichts.

Viele Grüße
Falko

Verfasst: 14.03.2006 15:16
von uweb
Ich habe noch drei allgemeine Verbesserungsvorschläge :

>>> 1. Beispiele
Ich habe noch gut in Erinnerung, daß ich am Anfang bei vielen Beispielen Probleme hatte. Bei den Gadgets z.B. reduziert sich die Eventbehandlung häufig auf

Code: Alles auswählen

Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
.

Ich glaube für jemanden der gerade erst anfangt wäre es eine große Hilfe wenn er zumindest das wesentliche dessen was er oben liest unten im Beispiel wieder finden würde. Es ist schon klar, das die Beispiele dadurch größer würden, aber man kann es ja z.B. so

Code: Alles auswählen

debug "Button 1 wurde gedrückt"
im Rahmen halten.

>>> 2. Links
Gerade weil der Umfang bei 4.0 zunimmt halte ich es für wichtig, das die Basics leicht zu (be-)greifen sind.

CreateMenu() steht in dem separaten Kapitel Menu.
DetachMenu() steht im Kapitel Window.
Die beiden sind auch nicht verlinkt.
MDIGadget() steht nun aber im Kapitel Gadget.
Hier fehlt der hilfreiche Link zu CreateMenu() nicht.

Daß das MDIGadget ein Gadget ist und deshalb auch unter Gadget steht ist mir schon klar. Nur, wenn ich keinen Plan habe suche ich Child-Window unter Window.

>>> 3. Plausibilität
In Prozeduren (das letzte Beispiel) wird Maximum() ohne Rückgabewert deklariert. Operate() bekommt einen Wert. Verwendet ihn aber nicht.

Code: Alles auswählen

  Declare Maximum(Wert1, Wert2)
  
  Procedure Operate(Wert)
    Maximum(10, 2)      ; Zu dieser Zeit ist Maximum() nicht bekannt.
  EndProcedure
  
  Procedure Maximum(Wert1, Wert2)
    ProcedureReturn 0
  EndProcedure

Sorry, wenn das ein bischen hart klingt. Es ist nicht so gemeint.

Verfasst: 14.03.2006 15:21
von mardanny71
@Falco
CreateImage() - doch,in der deutschen Hilfe ist eine Beschreibung drin.
Voreinstellung ist die des Bildschirms.
Wenn der Parameter 'Tiefe' weggelassen oder auf #PB_Image_DisplayFormat gesetzt wird, dann wird das Bildformat von aktuellen Desktop-Format abgeleitet. Gültige 'Tiefen'-Werte können sein: 1, 2, 4, 8, 16, 24 und 32 Bit. Wenn Sie TrueColor (Echtfarben) Formate bearbeiten und die Modifizierungen ohne Verlust an Farbinformationen wieder speichern möchten, dann sollten Sie die 24 oder 32 Bit Werte verwenden. Wenn die Bilder nur zum Anzeigen auf dem Bildschirm verwendet werden, bietet #PB_Image_DisplayFormat eine schnellere Performance.
GetClipboardImage() - stimmt, muß noch überarbeitet werden.

grüsse an alle
mardanny71

Verfasst: 14.03.2006 15:45
von uweb
Einen habe ich noch :
Statt immer in der Hilfe nach unten scrollen zu müssen, wäre doch eine Kopfzeile in der Art ganz praktisch :
Inhaltsverzeichnis Gadget MDIGadget()

Verfasst: 14.03.2006 15:56
von ts-soft
Eine Unterteilung der Gadgets wäre sinnvoll.
Gadgets
- Einstellungen
- Eigenschaften

oder so ähnlich, die Liste ist auf jedenfall zu Lang in der Hilfe.

Verfasst: 14.03.2006 19:53
von Falko
mardanny71 hat geschrieben:@Falco
CreateImage() - doch,in der deutschen Hilfe ist eine Beschreibung drin.
Voreinstellung ist die des Bildschirms.
Wenn der Parameter 'Tiefe' weggelassen oder auf #PB_Image_DisplayFormat gesetzt wird, dann wird das Bildformat von aktuellen Desktop-Format abgeleitet. Gültige 'Tiefen'-Werte können sein: 1, 2, 4, 8, 16, 24 und 32 Bit. Wenn Sie TrueColor (Echtfarben) Formate bearbeiten und die Modifizierungen ohne Verlust an Farbinformationen wieder speichern möchten, dann sollten Sie die 24 oder 32 Bit Werte verwenden. Wenn die Bilder nur zum Anzeigen auf dem Bildschirm verwendet werden, bietet #PB_Image_DisplayFormat eine schnellere Performance.
GetClipboardImage() - stimmt, muß noch überarbeitet werden.


grüsse an alle
mardanny71
Probier bitte mal dieses aus (PB4Beta). Ich hoffe du hast eine Webcam,
Scanner oder eine TV-Karte.

Wenn ich den Parameter bei CreateImage.. weglasse, kommt kein Bild.
Setzte ich dort den Parameter #PB_Image_DisplayFormat ein. habe ich
leider nur ein 2BIt Bild mit Grün und Schwarze Konturen.
Meine Grafikkarte ist aber auf 32Bit eingestellt.
Ohne Parameter geht nix und es muss min. ein Wert von 8, 16, 32 schon dort
eingestellt sein.

MfG Falko


http://www.purebasic.fr/german/viewtopi ... 0935#80935

Verfasst: 14.03.2006 20:38
von mardanny71
@Falko - diemal mit k :)

ich hab jetzt leider keinen Code.
Mal sehen - vielleicht doch eine Fehlinfo.
LoadImage() - stimmt da bei dir alles?

Könnte ja sein, das es zusammen mit Loadimage() zu solchen Prob´s kommt.

grüsse an alle
mardanny71

Verfasst: 14.03.2006 21:03
von Falko
@mardanny71

Habe jetzt mal auf Loadimage umgestellt:

Code: Alles auswählen

UsePNGImageDecoder()
OpenWindow(0, 700, 10, 640, 480,"Test")
CreateGadgetList(WindowID(0))
If LoadImage(1, "MeinTV.PNG") ; hier kann auch ein anderes Bild stehen.
SetClipboardImage(1)
EndIf
CreateImage(0,640,480); Das geht auch ohne Depth-parameter unter LoadImage
If StartDrawing(ImageOutput(0))
  DrawingMode(#PB_2DDrawing_Default)
  ;Bitte mal die 3 Varianten nacheinander auskommentieren.
  
   hbm.l=GetClipboardImage(#PB_Clipboard_Image,#PB_Image_DisplayFormat); Hier nur Grün_Schwarz
  ;hbm.l=GetClipboardImage(#PB_Clipboard_Image); ohne Parameter kein Bild
  ;hbm.l=GetClipboardImage(#PB_Clipboard_Image,16) ; Dieses funktioniert einwandfrei
  ResizeImage(0,640,480)
  If hbm
    DrawImage(hbm,0,0,640,480)
    StopDrawing()
 Else
    Debug "nix im Clipboard"
  EndIf
EndIf

ImageGadget(0,0,0,640,480,ImageID(0))

Repeat
eventID.l = WaitWindowEvent()
Until EventID = #PB_Event_CloseWindow 
Die 3 hbm... habe ich mal jeweils auskommentiert, welche nacheinander
ausprobiert werden sollten.
Das mit dem CreateImage benötigt keinen extra Parameter. Nachdem ich diesen Source probiert hatte ging auf einmal auch das mit dem Twain etc.
Aber das GetClipboardImage() muss wohl einen bestimmten Wert ab
8 haben.

[Edit] Beim anderen Source mit der Twain.dll benutze ich kein
Loadimage()

Gruß Falko

Verfasst: 15.03.2006 00:16
von mardanny71
@Falco

Ohne Parameter krieg ich auch nichts zum laufen.
Ich möchte auch mal Wissen, was Parameter 1 oder #PB_Image_DisplayFormat dann bedeuten. :roll:

Die Bittiiefe werden doch wohl Pflichtparameter werden.

Gruß
mardanny71

Verfasst: 15.03.2006 00:36
von Andre
Danke erstmal für die ganzen Anregungen - werde diese zum Wochenende abarbeiten. :)

Also bis dahin nur her damit.

Die Sache mit dem "Depth" Parameter bei den Image-Befehlen habe ich an Fred + fr34k zur Überprüfung gemeldet.