Aktuelle Zeit: 24.08.2019 06:36

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Icon zoomen
BeitragVerfasst: 03.09.2004 20:20 
Offline

Registriert: 29.08.2004 15:16
Hi,

ich hab mal echt ne doofe Frage, bekomme es aber nicht hin.

Ich möchte gern ein Icon, das in einem Imagegadget bereits dargestellt wird, in einen weiteren Imagegadet anzeigen, jedoch mit dem unterschied, das es im zweiten größer dargestellt wird (das ganze soll dann 32 * 10 = 320, also eine breite und Höhe von 320 Pixeln besitzen). Das Bild soll quasie gestreckt, gezoomt etc werden, wie ihr das auch nennen möchtet. Soll im Grunde genau so aussehen, wie im CodeArchiv Beispiel "Little_Magnifier.pb". Hier mal der kleine Ansatz. Alle meine Versuche haben zum Absturz von Purebasic geführt :(

[code]ImageGadget(86,141,100,32,32,ExtractIcon_(0,"C:\WINME\SYSTEM\shell32.dll",0))
ResizeImage(......code]

Bitte helft mir :)

_________________
http://cnesm.de.vu/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 03.09.2004 23:38 
Offline
Benutzeravatar

Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Sorry, dass ich so etwas ganz doofes antworte:
Selber schreiben :wink:

Ein zoom sollte noch machbar sein, wenn du dich damit abfindest, dass es
halt ein wenig pixelig wird.

_________________
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 12:17 
Offline

Registriert: 29.08.2004 15:16
Hi,

das will ich ja gerade das es pixelig wird :)

Selber schreiben habe ich versucht und mit Bilder, die ich mittels LoadImage laden kann, ist das ja auch einfach möglich, doch bei Icons kracht mir Purebasic immer :(

_________________
http://cnesm.de.vu/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 12:25 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
Das ist das komische an PB und icons: Wenn man Icons mittels LoadImage lädt kann man sie nicht bearbeiten. Das wollte ich auch einmal machen, für ein Animiertes Systray Icon, doch ich hab es nie geschafft.

_________________
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 12:34 
Offline
Benutzeravatar

Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Faszinierend :shock:

_________________
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 12:35 
Offline

Registriert: 29.08.2004 15:16
Hi,

hier mal die einfacher Erklärung:

Das erste zeigt das Laden eines Bildes, das zweite das Laden eines icons:

Code:
Global asd.s

If OpenWindow(0,200,200,900,500,#PB_Window_SystemMenu,"Test") : Else : End : EndIf
If CreateGadgetList(WindowID()) : Else : End : EndIf

LoadImage(33,"D:\Projekte\12.bmp")
ResizeImage(33,320,320)
ImageGadget(86,0,0,32,32,UseImage(33))

asd=Str(ExtractIcon_(0,"C:\WINOWS\SYSTEM\shell32.dll",1))
ResizeImage(asd,320,320)
ImageGadget(87,400,0,32,32,asd)

Repeat
   EventID.l = WindowEvent()
   Delay(10)
Until EventID=#PB_EventCloseWindow
;
End

_________________
http://cnesm.de.vu/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 12:45 
Offline
Benutzeravatar

Registriert: 31.08.2004 23:53
Wohnort: Shanghai
Dass dieser Code nicht funktioniert, verwundert nicht.

Ich gehe davon aus, du hast dein Windows nicht in "C:\WINOWS"
installiert.

Desweiteren hast du asd als String deklariert und füllst ihn mit der String
ausgabe des Handles des Icons. Wo soll das hin führen?

Was du bei ResizeImage() brauchst, ist die PB-Interne #ID und die
bekommst du nicht von einem API Handle, daran scheitert es schon. Ich
vermute, du musst dann aller mit Api machen /:->

_________________
Lars
The only problem with troubleshooting is, that sometimes the trouble shoots back.
P4 2,6Ghz, 512MB RAM, GeForce 6200, WinXP Pro SP2, PB V3.94


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 12:52 
Offline

Registriert: 29.08.2004 15:16
Hi,

Zitat:
Dass dieser Code nicht funktioniert, verwundert nicht.

Ich gehe davon aus, du hast dein Windows nicht in "C:\WINOWS"
installiert.


Daran liegts net, da das eigentlich auch nicht der Originalcode ist, nur schnell runter geschrieben. Auch mit richtiger Pfadangabe keine Besserung.

Zitat:
Desweiteren hast du asd als String deklariert und füllst ihn mit der String
ausgabe des Handles des Icons. Wo soll das hin führen?

Was du bei ResizeImage() brauchst, ist die PB-Interne #ID und die
bekommst du nicht von einem API Handle, daran scheitert es schon. Ich
vermute, du musst dann aller mit Api machen


Erstmal: Ich habe keine Ahnung von Handle, ID, String, Long usw. Ich probiere so lange rum, setze $,&,.l,.s etc., bis das dann irgendwie geht. Was ich da mache, weiss ich net :D

Bin ja generell der Meinung, das diese ImageID Kram der größte Kack ist. Warum wird nicht generell auf Handle umgestellt? so gäbs keine Probleme. Wie soll das denn bitte mit API aussehen?

_________________
http://cnesm.de.vu/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 13:20 
Offline
Benutzeravatar

Registriert: 29.08.2004 08:37
>Bin ja generell der Meinung, das diese ImageID Kram der größte Kack ist. Warum wird nicht generell auf Handle umgestellt? so gäbs keine Probleme. Wie soll das denn bitte mit API aussehen?

Ich denke mir dass wenn man komplett auf WinAPI Handles umsteigt der Linux kram wieder nicht funktioniert ;) . Wenn du willst kann ich dir im ICQ mal Handles und so Beibringen. Meistens liefert die WinAPI keine Strings zurück sondern nur Pointer auf Strings. Außerdem solltest du auch nur Strings durch Pointer übergeben, da es schneller ist.

So geht es hier:
Code:
Global asd

If OpenWindow(0,200,200,900,500,#PB_Window_SystemMenu,"Test") : Else : End : EndIf

File.s = "C:\WINDOWS\system32\shell32.dll"

asd = ExtractIcon_(0,@File.s,1)

Width = 32
Height = 32

hDC = GetDC_(WindowID())

Repeat
   DrawIconEx_(hDC, 0, 0, asd, Width, Height, 0, 0, $2)
   EventID.l = WindowEvent()
   Delay(10)
Until EventID=#PB_EventCloseWindow
ReleaseDC_(WindowID(), hDC)
End

_________________
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: 04.09.2004 13:31 
Offline

Registriert: 29.08.2004 15:16
Hi,

danke :) Werde mal schauen, welche ich nun verwende. Finde es aber toll, das du so schnell geholfen hast :) und auf die Hilfe, mir da mal alles zu erklären, komme ich gerne zurück :)

Da ich wusste, das das gehen muss, hab ich nochmal ein bissle rumprovbiert und siehe da, ohne weitere API sogar mit PB möglich:

Code:
Global IconS

If OpenWindow(0,200,200,900,500,#PB_Window_SystemMenu,"Loupe") : Else : End : EndIf
If CreateGadgetList(WindowID()) : Else : End : EndIf

LoadImage(33,"D:\Projekte\Nacasi\button\button\Symboldateien\12.bmp")
ResizeImage(33,320,320)
ImageGadget(86,0,0,32,32,UseImage(33))

IconS=ExtractIcon_(0,"C:\WINDOWS\SYSTEM\shell32.dll",2)


hImg = CreateImage(120,320,320) ;321
StartDrawing(ImageOutput())
Box(0, 0, 321,321,RGB(255,255,255))   
DrawImage(IconS,0,0,320,320)
StopDrawing()

ImageGadget(2,340,0,320,320,hImg)

Repeat
   EventID.l = WindowEvent()
   Delay(10)
Until EventID=#PB_EventCloseWindow
;
End


ich spreche mich hierfür für eine Funktion ala:

LoadIcon(1,Pfad,Iconummer)

aus, wleche auch unter Linux und AmigoOS laufen sollte :)

Deine Methode scheint schneller zu laufen, dennoch würde ich gerne so wenig API wie möglich verwenden. Ist es denn möglich meine Methode noch etwas schneller zu machen?

_________________
http://cnesm.de.vu/


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 14 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 5 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye