Français
Unités

SetMenuItemBitmap: Transparentes Bitmap pour MenuItem

 
- page 1 -



Georg
Teles
SetMenuItemBitmap-Unit

Transparentes Bitmap sur MenuItem mettons, Stil beibehalten

Bitmap avec einem Alpha-canal aus einer Instance transparent sur un beliebiges MenuItem eines bereits existierenden Menüs mets, sans den Stil des Menüs trop changement



funktioniert aussi sur TrackMenu, allerdings muss es bereits geladen worden son (s. externes Menu comme TrackMenu  [...]  )

Herunterladen

enthaltene main.bmp ist avec einem Alpha-canal versehen, muss naturellement dans PROFANE.EXE zum Testen eingebunden volonté

Win XP Win Vue Win 7 Win 8 Win 10

4 kB
Version:1.0
Hochgeladen:16.02.2016
Downloadcounter206
Herunterladen
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

16.02.2016  
 



 
- page 1 -


cela quoi Du meinst scheint sich mir plutôt sur BitBlit-Operationen  [...]  trop beziehen - là peux on im Prinzip 1 la couleur comme transparent (bzw. pas trop überzeichnen) définir. Ist meist la couleur 0.

So zeichnet Roland ensuite aussi z.B. chez Loadbmp ...; -1

cela hat avec Transluzenz bzw. Alpha-canal ensuite mais rien trop 1faire.

comment était cela car seulement... zeichnet Windows chez cette menu-Bildchen pas sowieso irgend une bestimmte la couleur transparent?! mir était so...

je schätze, dass Roland cela besser sais.
 
17.02.2016  
 




RGH
j'ai cela Ganze la fois zum Anlass pris, im kommenden XProfan X3 aussi chez normalen Menüs Icônes trop erlauben. qui Syntax ist qui gleiche comment chez den Customdraw-Menüs, seulement dass cela Icon-Handle comme negativer Wert angegeben wird.

là Windows pas direct Icônes, mais une Bitmap chez normalen Menüs erwartet, habe je en supplément une Routine geschrieben, qui un Icon dans un Bitmap umwandelt.

Zur Transparenz: chez den Customdraw-Menüs fais je oui eh' alles selbst, cela est, je zeichne cela Icon sur cela menu. Icônes avons oui de sich aus Transparenz et là muss je mich pas tout autor kümmern.

Hierbei gilt pas une Frabe comme transparent, mais Icônes avons encore une sogenannte masque: une zweifarbige noir/weiße Bitmap, chez qui qui Pixel noir sommes, qui pas transparent sommes. Um eh bien alors une Bitmap aus einem Icon trop erzeugen, erzeuge je une le vide Bitmap dans qui Taille des Icônes et kopiere eh bien Pixel pour Pixel qui Bitmap des Icônes dans qui neue Bitmap, wobei je seulement chez den schwarzen Pixeln qui masque qui Original-la couleur nehme et chez den übrigen Pixeln, qui zuvor ermittelte Systemfarbe des menu-Hintergrunds:

function IconToBitmap(DC: hDC; Icon: THandle; bc: integer): THandle;
var bmpResult: tHandle;
bmpColorOld, bmpMaskOld, bmpResultOld: tHandle;
IInfo: ICONINFO;
hdcColor, hdcMask, hdcResult: tHandle;
c, m, x, y, dx, dy: integer;
begin
bmpResult := 0;
Si GetIconInfo(Icon, IInfo) then begin
dx := IInfo.xHotspot * 2;
dy := IInfo.yHotspot * 2;
bmpResult := CreateCompatibleBitmap(DC, dx, dy);
// DCs erzeugen
hdcColor := createCompatibleDC(DC);
hdcMask := createCompatibleDC(DC);
hdcResult := createCompatibleDC(DC);
// Bitmaps zuweisen
bmpColorOld := SelectObject(hdcColor, IInfo.hbmColor);
bmpMaskOld := SelectObject(hdcMask, IInfo.hbmMask);
bmpResultOld := SelectObject(hdcResult, bmpResult);
for x := 0 to dx - 1 do begin
for y := 0 to dy - 1 do begin
c := getPixel(hdcColor,x,y);
m := getPixel(hdcMask,x,y);
si m = 0 then setPixel(hdcResult,x,y,c) d'autre setPixel(hdcResult,x,y,bc);
end;
end;
// Ergebnis zuweisen
bmpResult := SelectObject(hdcResult, bmpResultOld);
// Aufräumen
DeleteObject(SelectObject(hdcMask, bmpMaskOld));
DeleteObject(SelectObject(hdcColor, bmpColorOld));
DeleteObject(IInfo.hbmColor);
DeleteObject(IInfo.hbmMask);
DeleteDC(hdcColor);
DeleteDC(hdcMask);
DeleteDC(hdcResult);
end;
Result := bmpResult;
end;

peux on den komischen Code-Formatierer aussi débrancher, avec cela qui Code so dargestellt wird, comment je ihn geschrieben habe? je hasse Programme, qui croyons pour mich mitdenken trop doit.
Salut
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
17.02.2016  
 




Georg
Teles
iF (17.02.2016)
cela hat avec Transluzenz bzw. Alpha-canal ensuite mais rien trop 1faire.
comment était cela car seulement... zeichnet Windows chez cette menu-Bildchen pas sowieso irgend une bestimmte la couleur transparent?! mir était so...


oui c'est ca, avec cela hat cela rien zutun, dans XP wird probablement une bestimmte la couleur transparent gemacht bzw. wird "ersetzt" , kenne encore qui "Pinke" la couleur hehe --- suis bereits sur oui c'est ca cet Funktion gestolpert, la fois regarder si cela klappt
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

17.02.2016  
 




Georg
Teles
RGH (17.02.2016)
là Windows pas direct Icônes, mais une Bitmap chez normalen Menüs erwartet, habe je en supplément une Routine geschrieben, qui un Icon dans un Bitmap umwandelt.


Aaah habe qui Routine encore pas entier verstanden: genauer quoi Du avec
RGH (17.02.2016)
et chez den übrigen Pixeln, qui zuvor ermittelte Systemfarbe des menu-Hintergrunds

meinst, car sobald on den Fokus sur cela menu hat, wird qui Hintergrund des Menüs oui anders comme sans Fokus ? Ähnliches Tutorial avec BitBlit habe je avant 2 Tagen déjà gesehen  [...]  fois le Routine ausprobieren si vous cela gleiche täten tut comment cela Tutorial

RGH (17.02.2016)
peux on den komischen Code-Formatierer aussi débrancher, avec cela qui Code so dargestellt wird, comment je ihn geschrieben habe? je hasse Programme, qui croyons pour mich mitdenken trop doit.


HA cela peux je aussi pas ausstehen, besonders Programme qui sans vorwarnung quelque chose 1faire quoi on pas voudrais
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

17.02.2016  
 




RGH
avant Aufruf qui dessus gezeigten Routine ermittele je avec qui API getSysColor(color_menu) qui Hintergrundfarbe des Menüs. cet wird dans bc transfert. (qui erste paramètre ist qui aktive DeviceContext, qui zweite cela Icon-Handle et qui dritte qui Hintergrundfarbe.)

cela Changement qui la couleur beim Darüberfahren avec qui souris erledigt Windows. cela menu ist trop dem la date oui déjà gezeichnet.

qui Taille des Icônes ermittle je sur qui Position des Hotspots, là cette chez Icônes toujours exakt dans qui Mitte liegt. (chez einem Cursor wäre qui Ermittlung un qui Taille quelque chose aufwändiger, là vous pas dans qui Info-Struktur drin steht.) Aussi ermittle habe je dans qui Info-Struktur cela Handle zur farbigen Bitmap et zur Masken-Bitmap. Um qui Bitmaps eh bien trop Travailler, muss on den Bitmaps eh bien einem DeviceContext zuweisen, ebenso qui Ergebnis-Bitmap. qui übliche Verwaltungsaufwand arrêt, si on direct avec qui API programmiert. dans qui Boucle lese je ensuite Pixel pour Pixel qui la couleur qui farbigen Bitmap et gleichzeitig qui des entsprechenden Pixels qui masque. Ist cet 1, mets je cela entsprechende Pixel qui Ergebnis-Bitmap sur qui la couleur, ist es 0, ensuite sur qui Hintergrundfarbe.
et ensuite ist encore cela übliche Aufräumen annoncé.

Salut
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
17.02.2016  
 




Georg
Teles
Aaah vielen Dank pour qui detaillierte Erklärung, eh bien ist einleuchtend wieso là qui Hauteur / Breite * 2 steht, weil Hotspot des Icônes dans qui Mitte ist

RGH (17.02.2016)
cela Changement qui la couleur beim Darüberfahren avec qui souris erledigt Windows. cela menu ist trop dem la date oui déjà gezeichnet.


avec cela klärt sich qui Frage merci
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

18.02.2016  
 




Georg
Teles
salut!

RGH (17.02.2016)
cela Changement qui la couleur beim Darüberfahren avec qui souris erledigt Windows. cela menu ist trop dem la date oui déjà gezeichnet.


verstehe je cela richtig, heisst cela, chaque la fois beim Fokusieren sur cela menu wird IconToBitmap  fonctionnement ?

Grüße
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

20.02.2016  
 



[OFFTOPIC]
RGH (17.02.2016)
peux on den komischen Code-Formatierer aussi débrancher, avec cela qui Code so dargestellt wird, comment je ihn geschrieben habe?


oui, maintenant, simple den Voir le texte source avec einem Ausrufezeichen commencer - hab Deinen obigen Beitrag entsprechend angepasst.

[/OFFTOPIC]
 
20.02.2016  
 



 
- page 2 -



RGH
[OFFTOPIC]
iF (20.02.2016)
peux on den komischen Code-Formatierer aussi débrancher, avec cela qui Code so dargestellt wird, comment je ihn geschrieben habe?


iF (20.02.2016)
oui, maintenant, simple den Voir le texte source avec einem Ausrufezeichen commencer - hab Deinen obigen Beitrag entsprechend angepasst.


merci! je wußte doch, dass là quoi était. je hoffe seulement, dass je cela jusqu'à zum prochain la fois pas wieder oublier qc habe.
[/OFFTOPIC]
 
XProfan X3
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
20.02.2016  
 




RGH
Georg Teles (20.02.2016)
salut!

RGH (17.02.2016)
cela Changement qui la couleur beim Darüberfahren avec qui souris erledigt Windows. cela menu ist trop dem la date oui déjà gezeichnet.


verstehe je cela richtig, heisst cela, chaque la fois beim Fokusieren sur cela menu wird IconToBitmap  fonctionnement ?

Grüße


non, seulement einmalig beim XProfanbefehl APPENMENU, ISERTMENU ou bien SUBPOPUP. oui c'est ca là wird qui Bitmap aus dem Icon erzeugt et qui entsprechenden API dem Menüpunkt zugewiesen. Windows zeichnet ensuite beim Aufklappen des Menüs cela menu avec den zugewiesenen Bitmaps. Den effet, qui beim Fokusieren entsteht, erzeugt Windows selbsttätig.

(chez User-Drawn-Menüs, alors denen avec positiven Icon-Handles, ist es quelque chose anders. là pouvoir Windows gar rien beim Aufklappen ou bien Darüberfahren avec qui souris, ausser Messages trop senden et paramètre (wohin et comment etc.) bereitzustellen. cela Zeichnen übernimmt ici ensuite XProfan selbst. là volonté ensuite z.B. qui Icônes direct sur cela menu gezeichnet.)

Salut
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
20.02.2016  
 




Georg
Teles
Verstehe, très très bien
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

20.02.2016  
 




Georg
Teles
Update v.1.0 - ensuite plan wenigstens ab Windows Vue ($WinVer >= 6.0)
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

06.03.2016  
 




répondre


Topictitle, max. 100 marque.
 

Systemprofile:

ne...aucune Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

s'il te plaît s'inscrire um une Beitrag trop verfassen.
 

Options du sujet

21.834 Views

Untitledvor 0 min.
Georg Teles11.08.2024
Sven Bader23.01.2023
Manfred Barei11.11.2021
Andre Rohland05.02.2018
plus...

Themeninformationen



Admins  |  AGB  |  Applications  |  Auteurs  |  Chat  |  protection des données  |  Télécharger  |  Entrance  |  Aider  |  Merchantportal  |  Empreinte  |  Mart  |  Interfaces  |  SDK  |  Services  |  Jeux  |  cherche  |  Support

un projet aller XProfaner, qui il y a!


Mon XProfan
Privé Nouvelles
Eigenes Ablageforum
Sujets-La liste de voeux
Eigene Posts
Eigene Sujets
Zwischenablage
Annuler
 Deutsch English Français Español Italia
Traductions

protection des données


Wir verwenden Cookies seulement comme Session-Cookies à cause de qui technischen Notwendigkeit et chez uns gibt es aucun Cookies de Drittanbietern.

si du ici sur unsere Webseite klickst ou bien navigierst, stimmst du unserer Erfassung de Informationen dans unseren Cookies sur XProfan.Net trop.

Weitere Informationen trop unseren Cookies et en supplément, comment du qui Kontrolle par-dessus behältst, findest du dans unserer nachfolgenden Datenschutzerklärung.


d'accordDatenschutzerklärung
je voudrais keinen Cookie