hi,
wenn ich mir so die "modernen" Ico ansehe stelle ich fest das es immer
mehrere in verschiedenen Grössen sind ... warum / wofür ?
ein Ico kann ich als oDlg:Icon, als XBPSTATIC_TYPE_ICON in XbpStatic
und als XBPCOL_TYPE_ICON in einer XbpColumne benutzen ...wo noch?
Frage:wie kann ich, mit Xbase++, ein *.Ico in ein 32x32 BMP umwandeln?
Die Frage stellt sich nun wenn ich ein Ico habe und das für XbpPushbutton
verwenden will (was ja nicht geht).
Icon in Xbase++
Moderator: Moderatoren
- Martin Altmann
- Foren-Administrator
- Beiträge: 16517
- Registriert: Fr, 23. Sep 2005 4:58
- Wohnort: Berlin
- Hat sich bedankt: 111 Mal
- Danksagung erhalten: 48 Mal
- Kontaktdaten:
Hallo Jimmy,
ganz einfach:
Martin
ganz einfach:
- Unterschiedliche Bildschirmauflösungen
- Icon für den Desktop bzw. Startmenüeintrag und für das Symbol in der Titelleiste bzw. auf der Startleiste im minimierten Zustand
- Unterschiedliche Farbtiefen
Martin
Webseite mit XB2.NET und ausschließlich statischem Content in Form von HTML-Dateien: https://www.altem.de/
Webseite mit XB2.NET und ausschließlich dynamischem Content in Form von in-memory-HTML: https://meldungen.altem.de/
Mitglied der XUG Osnabrück
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
hi,
ok ... aber das ganze geht doch im Prinzip auch wenn man nur ein 32x32
grosses ICO hat ?
wie kann ich das ganze nun für Xbase++ nutzen ? Der Grund ist das man
zwar viele ICO findet man aber für Xbase++ BMP,JPG,GIF oder PNG
braucht.
erst "Vorarbeit" leisten. Ich kann *.ICO nur über die *.ARC Resource
Datei in Xbase++ einbinden ... eine :loadfile gibt mir nur "schwarz".
Wenn ich es also in eine *.ARC habe, dann kann ich es auf eine XbpStatic
anzeigen. Was ich nun "sehe" kann ich ja "photographieren" mit Xbase++
ok ... aber das ganze geht doch im Prinzip auch wenn man nur ein 32x32
grosses ICO hat ?
wie kann ich das ganze nun für Xbase++ nutzen ? Der Grund ist das man
zwar viele ICO findet man aber für Xbase++ BMP,JPG,GIF oder PNG
braucht.
ich habe zwar eine Möglichkeit gefunden, jedoch muss ich dazu immerFrage:wie kann ich, mit Xbase++, ein *.Ico in ein 32x32 BMP umwandeln?
erst "Vorarbeit" leisten. Ich kann *.ICO nur über die *.ARC Resource
Datei in Xbase++ einbinden ... eine :loadfile gibt mir nur "schwarz".
Wenn ich es also in eine *.ARC habe, dann kann ich es auf eine XbpStatic
anzeigen. Was ich nun "sehe" kann ich ja "photographieren" mit Xbase++
Code: Alles auswählen
#include "gra.ch"
#include "xbp.ch"
#include "Appevent.ch"
#include "Directry.ch"
#include "common.ch"
PROCEDURE Appsys
RETURN
PROCEDURE Main
LOCAL nEvent, mp1, mp2, oXbp
LOCAL oDlg, oDraw, oStatic, cText,oText
oDlg := XbpDialog():new()
oDlg:title := "Test Static Controls"
oDlg:create( ,, {50,50}, {500,300} )
oDraw := oDlg:drawingArea
// XbpStatic als System Icon
oStatic := XbpStatic():new( oDraw,, {100,100}, {32,32} )
oStatic:type := XBPSTATIC_TYPE_ICON
oStatic:caption := 0001
oStatic:create()
oText := XbpStatic():new( oDraw,, {10,10}, {280,32} )
oText:type := XBPSTATIC_TYPE_TEXT
oText:caption := "*.ICO"
oText:create()
ShowRes(oStatic,oText)
* nEvent := 0
* DO WHILE nEvent <> xbeP_Close
* nEvent := AppEvent( @mp1, @mp2, @oXbp )
* oXbp:handleEvent( nEvent, mp1, mp2 )
* ENDDO
RETURN
PROCEDURE ShowRes(oStatic,oText)
LOCAL n
LOCAL aRes := RESArray()
LOCAL nLen := LEN(aRes)
LOCAL cFile
LOCAL aSize := oStatic:currentsize()
FOR n:= 1 TO nLen
IF aRes[n][2] = "O"
cFile := STRTRAN(UPPER(aRes[n][3]),".ICO",".BMP")
oText:Setcaption(cFile)
* oStatic:Setcaption(n)
oStatic:Setcaption( aRes[n][1] )
SLEEP(10)
MAKEBMP(oStatic,{0,0,aSize[1],aSize[2]},cFile)
ENDIF
NEXT
RETURN
PROCEDURE MAKEBMP(oSourceArea,aRect,cFile,InOut)
LOCAL oTargetPS := XbpPresSpace():new():create()
LOCAL oBitmap := XbpBitmap():new():create()
LOCAL oThumb := XbpBitmap():new():create()
LOCAL oPS := NIL
LOCAL nSizeX := aRect[3] - aRect[1]
LOCAL nSizeY := aRect[4] - aRect[2]
LOCAL cSavePic := STRTRAN(cFile,".ICO",".BMP")
DEFAULT InOut TO 1
oPS := oSourceArea:lockPS()
IF InOut = 0
oBitmap:presSpace(oTargetPS)
oBitmap:make(nSizeX,nSizeY)
GraBitBlt(oTargetPS,oPS,{0,0,nSizeX,nSizeY},aRect)
ELSE
oThumb:presSpace(oTargetPS)
oThumb:make(32,32)
GraBitBlt(oTargetPS,oPS,{0,0,32,32},;
{0,0,nSizeX - 1,nSizeY - 1},;
GRA_BLT_ROP_SRCPAINT,GRA_BLT_BBO_IGNORE)
ENDIF
oSourceArea:unLockPS(oPS)
Sleep(0)
oTargetPS:destroy()
oTargetPS := NIL
oPS := NIL
IF FILE(cSavePic)
FERASE(cSavePic)
ENDIF
oThumb:SaveFile(cSavePic,XBPBMP_FORMAT_WIN3X)
oThumb:Destroy()
oThumb := NIL
// destroy it
oBitmap:Destroy()
oBitmap := NIL
RETURN
FUNCTION RESArray()
LOCAL aRet := {;
{0001,"O", "administrative-tools.ico"},;
{0002,"O", "Breads.ico"},;
{0003,"O", "Cocktail.ico"},;
{0004,"O", "coffeecup.ico"},;
{0005,"O", "coffeepot.ico"},;
{0006,"O", "Config.ico"},;
{0007,"O", "configure.ico"},;
{0008,"O", "Control Panel 1.ico"},;
{0009,"O", "Control Panel.ico"},;
{0010,"O", "Control Panel2.ico"},;
{0011,"O", "Copy.ico"},;
{0012,"O", "Cpu.ico"},;
{0013,"O", "Cut.ico"},;
{0014,"O", "decrypted.ico"},;
{0015,"O", "Delete.ico"},;
{0016,"O", "Doc.ico"},;
{0017,"O", "Documents and Settings.ico"},;
{0018,"O", "Doc_edit.ico"},;
{0019,"O", "doc_yellow.ico"},;
{0020,"O", "doc_yellow_edit.ico"},;
{0021,"O", "eCash.ico"},;
{0022,"O", "edit.ico"},;
{0023,"O", "editcut.ico"},;
{0024,"O", "editdelete.ico"},;
{0025,"O", "encrypted.ico"},;
{0026,"O", "Favourites.ico"},;
{0027,"O", "filenew.ico"},;
{0028,"O", "fileprint.ico"},;
{0029,"O", "filequickprint.ico"},;
{0030,"O", "Find 1.ico"},;
{0031,"O", "gimp.ico"},;
{0032,"O", "Green light.ico"},;
{0033,"O", "inBox.ico"},;
{0034,"O", "kcalc.ico"},;
{0035,"O", "kcmpci.ico"},;
{0036,"O", "kcmsound.ico"},;
{0037,"O", "kcoloredit.ico"},;
{0038,"O", "kcontrol.ico"},;
{0039,"O", "kuser.ico"},;
{0040,"O", "laptop_battery.ico"},;
{0041,"O", "launch.ico"},;
{0042,"O", "List.ico"},;
{0043,"N", "LorryGreen.ico"},;
{0044,"O", "mail_rokey.net.ico"},;
{0045,"O", "misc.ico"},;
{0046,"O", "mobile telephone.ico"},;
{0047,"O", "mouse.ico"},;
{0048,"O", "mystery machine front.ico"},;
{0049,"O", "mystery machine lateral .ico"},;
{0050,"O", "mystery machine.ico"},;
{0051,"O", "New Doc.ico"},;
{0052,"O", "outBox.ico"},;
{0053,"O", "package_toys.ico"},;
{0054,"O", "password.ico"},;
{0055,"O", "Paste.ico"},;
{0056,"O", "pen.ico"},;
{0057,"O", "pumpkin.ico"},;
{0058,"O", "r2_dragon.ico"},;
{0059,"O", "Radiactive.ico"},;
{0060,"O", "Red light.ico"},;
{0061,"O", "reload.ico"},;
{0062,"O", "rescue_antivirus.ico"},;
{0063,"O", "Save.ico"},;
{0064,"O", "scaner.ico"},;
{0065,"O", "Security 2.ico"},;
{0066,"O", "sign_dollar_32.ico"},;
{0067,"O", "star.ico"},;
{0068,"O", "Stop 2.ico"},;
{0069,"O", "Stop Sign.ico"},;
{0070,"O", "toilet paper.ico"},;
{0071,"N", "TruckYellow.ico"},;
{0072,"O", "View Doc.ico"},;
{0073,"O", "Write.ico"},;
{0074,"O", "write_document.ico"},;
{0075,"O", "Yellow light.ico"}}
RETURN aRet
*
*
*
gruss by OHR
Jimmy
Jimmy
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Hi,
Icons sind genau für die Zwecke da (Programmicon klein in Liste, größer als Symbole etc...) die du beschrieben hast.
Wenn nur ein Icon vorliegt, muss Windows die Zwischengrößen automatisch umrechnen, das kann noch gut aussehen, meist jedoch nicht besonders.
Daher sollte man verschiedene Standardgrößen anbieten.
Icons mache ich normalerweise mit IconEdit32 selbst - oder ändere welche ab, die ich mit IconJack besorgt habe ( psst ) ...
Mit IrfanView kann man ein Icon öffnen und ein BMP daraus abspeichern, ich habe es gerade probiert und es ging gut
Icons sind genau für die Zwecke da (Programmicon klein in Liste, größer als Symbole etc...) die du beschrieben hast.
Wenn nur ein Icon vorliegt, muss Windows die Zwischengrößen automatisch umrechnen, das kann noch gut aussehen, meist jedoch nicht besonders.
Daher sollte man verschiedene Standardgrößen anbieten.
Icons mache ich normalerweise mit IconEdit32 selbst - oder ändere welche ab, die ich mit IconJack besorgt habe ( psst ) ...
Mit IrfanView kann man ein Icon öffnen und ein BMP daraus abspeichern, ich habe es gerade probiert und es ging gut
Gruß
Hubert
Hubert