GUI: Bild anzeigen
Übersicht

M@tzM@NBetreff: GUI: Bild anzeigen |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo!
Ich möchte in meinem Fenster ein Bild anzeigen. Muss ich dafür extra ein Canvas erstellen oder geht das ganze auch einfacher? |
||
mfg
M@tzM@N Du bist Deutschland |
![]() |
Henry |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nein, dafür sind die Canvas da. | ||
Aiya Eärendil Elenion Ancalima!
All you have to decide is what to do with the time that is given to you. • Robsite.de ist eine Anlaufstelle für Tutorials und Tools, die Noobs das Leben leichter machen! • Forensuche ist nicht nur als Lückenfüller in den oberen Links gedacht! |
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oder ein Panel mit (SetPanelPixmap) | ||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dazu hätte ich dann mal 'ne Fräge.
Wie könnte man eine scrollbare Liste bewerkstelligen in der Bilder angezeigt werden die einzeln als Item fungieren sollen? Etwa so: ![]() |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
@bruZard
Du erstellt ein Bild, in dem deine Bilder, alle in der Reihenfolge nebeneinander sind. (Wichtig: Die Bilder müssen gleich hoch und breit sein.) Dann lädst du das Bild als Iconstrip. Dann erstellt du eine Listbox und weist den Iconstrip der Listbox zu. Jetzt fügst du ListboxItems hinzu, ohne einen text also "" und mit der entsprechenden BildNummer. Habs jetzt nicht getestet, müsste aber funktionieren. |
||
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Knackpunkt dabei ist der IconStrip ... mir liegen die Tilesets nicht in einer Reihe vor, ich müsste also erstmal eine Pixmap erstellen und jedes einzelne Tile aus dem Originalimage kopieren. Da ich bisher noch kein "CopyRect" oder ähnliches gefunden habe, scheint mir hier der Aufwand imens. | ||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Warum?
Zeichnest es in den Hindergrund und grabst es heraus in ein neues Pixmap |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
ok, die Lösung war dann doch ganz einfach ... trotzdem danke Dreamora ![]() Code: [AUSKLAPPEN] Graphics 800,600,0 Function CreateIconStrip:TImage(image_file:String,tile_count:Int, tile_vars:Int, tile_width:Int, tile_height:Int) Local image:TImage = LoadAnimImage(image_file,tile_width,tile_height,0,tile_count) Local real_count:Int = tile_count/tile_vars Local real_width = real_count*tile_width Local dest_pix:TPixmap = CreatePixmap(real_width,tile_height,PF_BGRA8888) Local x:Int = 0 Local y:Int = 0 For Local i:Int = 0 To real_count-1 Local temp_pix:TPixmap = LockImage(image,i*tile_vars) dest_pix.Paste(temp_pix,x,y) UnlockImage(image) x:+tile_width Next Return LoadImage(dest_pix) End Function Global mystrip:TImage = CreateIconStrip("data/tilesets/sandsturm/ground/tset01.bmp",56,4,32,32) Repeat Cls DrawImage mystrip,0,0 Flip Until KeyHit(KEY_ESCAPE) Die Funktion CreateIconStrip erzeugt aus einem Tileset einen Iconstrip. Der Parameter tile_vars ist bei mir von Bedeutung weil jedes Tile in einem Set in n verschiedenen Variationen vorliegen darf. Im Editor will ich aber natürlich immer nur eine Variante des Tiles anzeigen. |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es darf also kein TImage sein, sonders muss ein TPixmap sein ... schön dass auch das nicht dokumentiert ist ... naja, hier mal ein funktionierender Code und ein Test-Download für eine Listbox als Tile-Auswahl:
Code: [AUSKLAPPEN] Strict Global mywin:TGadget = CreateWindow("Iconstrip Test",0,0,640,480,0,WINDOW_TITLEBAR|WINDOW_STATUS|WINDOW_MENU) Global list:TGadget = CreateListBox(2,2,60,ClientHeight(mywin)-4,mywin) Local mystrip:TIconStrip = LoadIconStrip(CreateIconStrip("tset01.bmp",56,4,32,32)) SetGadgetIconStrip(list,mystrip) For Local i:Int = 0 To 13 AddGadgetItem(list,"",GADGETITEM_DEFAULT,i) Next Repeat WaitEvent() Select EventID() Case EVENT_WINDOWCLOSE; End End Select Forever Function CreateIconStrip:TPixmap(image_file:String,tile_count:Int, tile_vars:Int, tile_width:Int, tile_height:Int) Local image:TImage = LoadAnimImage(image_file,tile_width,tile_height,0,tile_count) Local real_count:Int = tile_count/tile_vars Local real_width = real_count*tile_width Local dest_pix:TPixmap = CreatePixmap(real_width,tile_height,PF_BGRA8888) Local x:Int = 0 Local y:Int = 0 For Local i:Int = 0 To real_count-1 Local temp_pix:TPixmap = LockImage(image,i*tile_vars) dest_pix.Paste(temp_pix,x,y) UnlockImage(image) x:+tile_width Next Return dest_pix End Function Exe, Source und Mediafile: http://www.timemill.de/pub/download/iconstrip.zip |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Es darf also kein TImage sein, sonders muss ein TPixmap sein ... schön dass auch das nicht dokumentiert ist ... Ein Image ist eine Textur die eine Pixmap vorraussetzt und die Textur des Images wird immer auf eine gerade Größe aufgerundet (32, 64, 128, etc.) Damit will ich sagen, wieso muss dokumentiert werden das man kein TImage bei einem Gadget verwenden sollte, die pure Logik verbietet diesen Gedanken doch schon. Desweiteren ist das LoadAnimImage in deinem Source irgendwie überflüßig. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
M@tzM@N |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So, das habe es jetzt mit SetPanelPixmap gemacht, aber das Bild wird nicht angezeigt. Mein Code:
Code: [AUSKLAPPEN] Global imgDescription:TGadget Global description:TPixMap imgDescription = CreatePanel ( 0, 0, 149, 200, frmMain, PANEL_ACTIVE ) description = LoadPixmap ( "description.gif" ) SetPanelPixmap ( imgDescription, description, PANELPIXMAP_FIT ) Was habe ich da jetzt falsch gemacht? |
||
mfg
M@tzM@N Du bist Deutschland |
![]() |
Suco-XBetreff: ...... |
![]() Antworten mit Zitat ![]() |
---|---|---|
.gif
Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
M@tzM@N |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Cool! Jetzt funktioniert es ![]() Habe dann jetzt aber ein anderes Problem, ich weiss nicht wie ich *.png transparent machen kann (wird ja unterstützt, aber mir fehlt das Programm)... |
||
mfg
M@tzM@N Du bist Deutschland |
![]() |
d-bug |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das macht wohl jede übliche Bildbearbeitungssoftware dieser Erde ![]() |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Und falls du nicht weisst wonach genau suchen: GIMP ist zb ein Gratisprogramm ![]() |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
M@tzM@N |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja das habe ich jetzt hinbekommen ![]() Aber BlitzMax lädt die Datei auch ABER es ist nicht wirklich transparent ... |
||
mfg
M@tzM@N Du bist Deutschland |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Pixmaps werden nicht transparent.
Nur images und damit ein image transparent wird musst du vorher mittels SetBlend auf den transparenten Rendermodus gehen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
bruZard |
![]() Antworten mit Zitat ![]() |
---|---|---|
Dreamora hat Folgendes geschrieben: Pixmaps werden nicht transparent.
Nur images und damit ein image transparent wird musst du vorher mittels SetBlend auf den transparenten Rendermodus gehen. Was widerum nicht direkt auf dem GUI geht da dort nur Pixmaps verwendet werden und es keinen Zielhafen für ein SetBlend gibt. Einzige Möglichkeit: Canvas erstellen, GraphicsCanvas holen und bei EVENT_TIMERTICK so bemalen wie man dies unter "normalen" Umständen tun würde. |
||
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32
User posted image |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Oder die Grafiken vorweg entsprechend designen und die MaskColor verwenden ... Das ist zumindest aktuell noch wie Windows und wahrscheinlich auch FLTK das gerne hätte, bis die neuen grafischen Oberflächen kommen | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group