![]() |
Anzeige:
|
|
|||||||
| XProfan Alles rund um die Programmiersprache XProfan. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo alle Miteinander!
Ich habe mal wieder ein kleines Problem und es ist mal wieder keine Lösung in Sicht… Ich möchte ein Bild in den Speicher laden und anschließend einen Text darüber schreiben. Bisher mache ich das mit „MLoadBmp“ und das funktioniert auch wunderbar. Das Bild soll später in ein „PicButton“ eingesetzt werden und damit fangen die Probleme an. Der „PicButton“ hat nicht immer exakt die gleiche Größe, denn die Größe soll Fensterabhängig sein. Lade ich jetzt mit „MLoadBmp“ ein größeres Bild in den Speicher, dann wird später nur ein Teil des Bildes angezeigt. Und lade ich ein kleineres Bild in den Speicher, dann bedeckt das Bild nicht den gesamten „PicButton“. Optimal währe hier ein Befehl wie: „MLoadSizedBmp“, aber leider gibt es den Befehl nicht… Daher meine Frage: Wie bekomme ich ein Bild mit einer Größe X in den Speicher mit Größe Y??? Har hier vielleicht jemand eine Idee? Danke im Voraus… LG Jens |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Ich hab einen älteren Code mit Static mal etwas umgestellt, dass er mit Buttons funktioniert. Geht heute sicher eleganter, geht aber.
Code:
'
' © Frank Abbing
' für http://www.paules-pc-forum.de/forum/xprofan/
'
Declare pseudobitmap&,bitmap&,butt&,x&,y&
Def SelectObject(2) !"GDI32","SelectObject"
Def CreateCompatibleBitmap(3) !"GDI32","CreateCompatibleBitmap"
Def GetSysColor(1) !"USER32","GetSysColor"
Window %maxx,0-800,600
Cls GetSysColor(15)
' Grösse des Buttons
'
x&=320
y&=30
MCls %maxx,%maxy
Startpaint -1
' Name des Bilds
'
DrawSizedPic "Background.bmp", 0, 0 - x&, y&; 0
TextColor 0,-1
DrawText 0,0,"Hier steht ein Text."
' Pseudobitmap erstellen. BM_SETIMAGE funktioniert nur mit Bitmaps, die keinem HDC zugeordnet sind.
'
pseudobitmap&=CreateCompatibleBitmap(%hdc,16,16)
' Pseudobitmap unserem HDC zuordnen
' Als Ergebnis bekommen wir unsere losgelöste Bitmap zurück !
'
bitmap&=SelectObject(%hdc,pseudobitmap&)
EndPaint
' Unsichtbaren Button erstellen
'
butt&=Control("BUTTON", "Butt01", $54010580, 80, 80, 0, 0, %hwnd, 2000, %hInstance, $00000000)
' Bitmap dem Static zuordnen
'
Sendmessage(butt&,$F7,0,bitmap&) 'BM_SETIMAGE
' Fenster und Static sichtbar machen
'
SetWindowPos butt&=40,50-x&,y&
ShowWindow(butt&,1)
SetWindowPos %hwnd=0,0-800,600
While 1
WaitInput
Case %key=2:Break
Endwhile
' - Button zerstören, damit die Bitmap wieder frei wird
' - Bitmap löschen
'
DestroyWindow(butt&)
DeleteObject bitmap&
End
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (09.09.2009 um 06:23 Uhr) |
|
|
|
|
|
#3 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo Frank!
Danke für den Code, den werde ich mir Morgen einmal sehr genau anschauen. Da stehen so viele schöne Anweisungen drin die ich nicht verstehe, hoffentlich geht das auch gut... LG Jens |
|
|
|
|
|
#4 (Direktlink) |
|
Ist öfter hier
![]() Registriert seit: 20.02.2009
Alter: 39
Beiträge: 71
|
Hallo Frank,
inspiriert durch Deinen Code habe ich mir Heute den „MLoadSizedBmp“ Befehl selber erstellt. Es funktioniert jetzt alles wie gewollt und ich brauche in meinem Progi nur noch den Befehl „MLoadBmp“ gegen die Routine „MLoadSizedBmp“ austauschen – fertig... Code:
Window 50,50-300,200 ' Fenster erstellen
Var Breite% = 250 ' Breite Button
Var Höhe% = 80 ' Höhe Button
Var Bild$ = "C:\\Test.jpg" ' Testbild Button
' Befehl "MLoadSizedBmp"
Proc MLoadSizedBmp
Parameters Br&,Ho&,Bi$ ' Breite, Höhe, Bild
IfNot FileExists(Bi$) ' wenn Bild nicht gefunden wird, dann...
MCLs Br&, Ho&, rgb(255,0,0) ' Fehler - Speicher-BMP erstellen (rot)
Else ' wenn Bild gefunden wurde, dann...
MCLs Br&, Ho& ' leere Speicher-BMP anlegen
StartPaint -1 ' Grafikbefehle auf Speicher-BMP umschalten
DrawSizedPic Bi$, 0, 0 - Br&, Ho&; 0 ' Bild in den Speicher laden
EndPaint ' Umleitung beenden
EndIf
EndProc
' Bild laden
MLoadSizedBmp(Breite%,Höhe%,Bild$) ' Bild "Sized" in den Speicher laden
' weiteren Text erstellen
STARTPAINT -1 ' Grafikbefehle auf Speicher-BMP umschalten
UseFont "Times New Roman",50,22,1,1,0
TextColor @RGB(0,0,0),-1
DrawText 38,11,"Test OK"
TextColor @RGB(150,255,72),-1
DrawText 35,12,"Test OK"
EndPaint ' Umleitung beenden
' Button erstellen
Var Button& = @Create("PicButton",%HWnd,@Create("hPic",0,"&MEMBMP"),20,30,Breite%,Höhe%) ' Button erstellen mit Bild aus Speicher
' Endlosschleife
While 1
WaitInput
Case %key=2 : Break
Case Clicked(Button&) : Playsound "SystemHand",1
Endwhile
' Ressourcen wieder freigegeben
DeleteObject Button&
End
Danke noch einmal für die schnelle Hilfe... LG Jens |
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Na optimal.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Fotos - Bild in Bild einfügen | Stegge | Allgemein | 9 | 23.05.2007 13:52 |
| Fehler im Speicher aber der Speicher ist OK | proti_de | Hardware - Problemlösungen | 0 | 27.01.2005 08:51 |
| Bild&Faxanzeige und Paint auf Bild& Fax und Fotoprg | Paule 60 | Windows XP | 8 | 08.12.2004 19:52 |
| Kopieren von HDD zu HDD | bieler11 | Hardware - Problemlösungen | 7 | 01.06.2004 22:18 |
| Ist ECC Speicher besser als normaler Speicher? | wax77 | Hardware - Problemlösungen | 2 | 12.06.2002 18:32 |