Español
Unidades

SetMenuItemBitmap: Transparentes Mapa de bits para MenuItem

 

Georg
Teles
SetMenuItemBitmap-Unit

Transparentes De mapa de bits en MenuItem conjunto, Stil beibehalten

Mapa de bits con un Alpha-Kanal de uno Instance transparent en una beliebiges MenuItem uno ya existierenden Menüs setzt, sin el Stil des Menüs a ändern



funktioniert auch en TrackMenu, allerdings muss lo ya geladen worden ser (s. externes Menu como TrackMenu  [...]  )

Descargar

enthaltene main.bmp es con un Alpha-Kanal versehen, muss natürlich en PROFAN.EXE para Testen eingebunden voluntad

Win XP Win Vista Win 7 Win 8 Win 10

4 kB
Versión:1.0
Hochgeladen:16.02.2016
Ladeanzahl206
Descargar
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

16.02.2016  
 




Georg
Teles
Win 7, 8, 10 va, en XP no, menno

 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

16.02.2016  
 




ByteAttack
Georg Teles (16.02.2016)
Win 7, 8, 10 va, en XP no, menno





Altes Problema con XP - Alphakanäle en PNG voluntad auch sólo de Vista unterstützt...
 
XProfan X3
Website:  [...] 
Facebook:  [...] 
16.02.2016  
 




Georg
Teles
ByteAttack (16.02.2016)
Altes Problema con XP - Alphakanäle en PNG voluntad auch sólo de Vista unterstützt...


hm, pero es una Mapa de bits - como regelt porque XP el Transparenz, war como no algo como como una belegte Farbe (s. pink also RGB(255,0,255) el como Alpha Kanal interpretiert se en XP ?
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

16.02.2016  
 



Das lo que quiere decir scheint se me más en BitBlit-Operationen  [...]  a beziehen - como puede ser en el Principio 1 Farbe como transparent (o. no a überzeichnen) definieren. Ist meist Farbe 0.

So características Roland entonces auch z.B. en Loadbmp ...; -1

Das ha con Transluzenz o. Alpha-Kanal entonces aber nichts a tun.

Como war el porque sólo... características Windows de estos Menü-Bildchen no sowieso irgend una cierto Farbe transparent?! me war así...

Yo schätze, dass Roland el mejor weiß.
 
17.02.2016  
 




RGH
Yo habe el Ganze veces para Anlass genommen, en el kommenden XProfan X3 auch en normalen Menüs Icons a erlauben. El Syntax Es el gleiche como en el Customdraw-Menüs, sólo dass el Icon-Handle como negativer Valor angegeben se.

Como Windows no direkt Icons, pero una Mapa de bits en normalen Menüs esperado, Yo dazu una Rutina geschrieben, el una Icon en un Mapa de bits umwandelt.

A Transparenz: En el Customdraw-Menüs mache Yo sí eh' alles incluso, el heißt, Yo zeichne el Icon el Menü. Icons haben sí de se de Transparenz y como muss Yo mich no por lo tanto kümmern.

Hierbei gilt no una Frabe como transparent, pero Icons haben ni sogenannte Maske: una zweifarbige schwarz/weiße Mapa de bits, en el Pixel schwarz son, el no transparent son. Um nun also una Mapa de bits de una Icon a erzeugen, erzeuge Yo una vacío Mapa de bits en el Größe des Icons y kopiere nun Pixel para Pixel el Mapa de bits des Icons en el neue Mapa de bits, wobei Yo sólo en el schwarzen Pixeln el Maske el Original-Farbe nehme y en el übrigen Pixeln, el zuvor ermittelte Systemfarbe des Menü-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;
If 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 := Seleccionar objeto(hdcColor, IInfo.hbmColor);
bmpMaskOld := Seleccionar objeto(hdcMask, IInfo.hbmMask);
bmpResultOld := Seleccionar objeto(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);
if m = 0 then setPixel(hdcResult,x,y,c) más setPixel(hdcResult,x,y,bc);
end;
end;
// Ergebnis zuweisen
bmpResult := Seleccionar objeto(hdcResult, bmpResultOld);
// Aufräumen
DeleteObject(Seleccionar objeto(hdcMask, bmpMaskOld));
DeleteObject(Seleccionar objeto(hdcColor, bmpColorOld));
DeleteObject(IInfo.hbmColor);
DeleteObject(IInfo.hbmMask);
DeleteDC(hdcColor);
DeleteDC(hdcMask);
DeleteDC(hdcResult);
end;
Result := bmpResult;
end;

Kann uno el komischen Code-Formatierer auch abschalten, así el Code así dargestellt se, Yo ihn geschrieben habe? Yo hasse Programas, el glauben para mich mitdenken tener.
Saludo
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)
Das ha con Transluzenz o. Alpha-Kanal entonces aber nichts a tun.
Como war el porque sólo... características Windows de estos Menü-Bildchen no sowieso irgend una cierto Farbe transparent?! me war así...


genau, así ha el nichts zutun, en XP se vermutlich una cierto Farbe transparent gemacht o. se "ersetzt" , saber todavía el "Pinke" Farbe hehe --- bin ya encima genau esta Función gestolpert, veces schauen si el klappt
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

17.02.2016  
 




Georg
Teles
RGH (17.02.2016)
Como Windows no direkt Icons, pero una Mapa de bits en normalen Menüs esperado, Yo dazu una Rutina geschrieben, el una Icon en un Mapa de bits umwandelt.


Aaah habe el Rutina todavía no bastante verstanden: genauer qué Usted con
RGH (17.02.2016)
y en el übrigen Pixeln, el zuvor ermittelte Systemfarbe des Menü-Hintergrunds

media, porque sobald uno el Fokus el Menü ha, se el Hintergrund des Menüs sí anders como sin Fokus ? Ähnliches Tutorial con BitBlit Yo antes 2 Tagen ya gesehen  [...]  veces el Rutina ausprobieren si ellos el gleiche täten tut como el Tutorial

RGH (17.02.2016)
Kann uno el komischen Code-Formatierer auch abschalten, así el Code así dargestellt se, Yo ihn geschrieben habe? Yo hasse Programas, el glauben para mich mitdenken tener.


HA el kann Yo auch no ausstehen, besonders Programas el sin vorwarnung algo tun qué no möchte
 
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

17.02.2016  
 




RGH
Vor Aufruf el oben gezeigten Rutina ermittele I, con el API getSysColor(color_menu) el Color de fondo des Menüs. Diese se en bc transferencia. (Der erste Parámetro es el aktive DeviceContext, el zweite el Icon-Handle y dritte el Color de fondo.)

Das Cambio el Farbe beim Darüberfahren con ratón hecho Windows. Das Menü es a el Zeitpunkt sí ya suscrito.

El Größe des Icons ermittle Yo en Position des Hotspots, como dieser en Icons siempre exakt en el Mitte liegt. (En una Cursor wäre el Ermittlung una el Größe algo aufwändiger, como ellos no en el Info-Struktur drin es.) Außerdem ermittle Yo en el Info-Struktur el Handle a farbigen Mapa de bits y a Masken-Mapa de bits. Um el Bitmaps nun a bearbeiten, muss uno el Bitmaps nun una DeviceContext zuweisen, ebenso el Ergebnis-Mapa de bits. Der übliche Verwaltungsaufwand sólo, si uno direkt con el API programmiert. In el Bucle lese Yo entonces Pixel para Pixel el Farbe el farbigen Mapa de bits y gleichzeitig el des entsprechenden Pixels el Maske. Ist dieses 1, Puse el entsprechende Pixel el Ergebnis-De mapa de bits en el Farbe, es 0, entonces en el Color de fondo.
Und entonces todavía el übliche Aufräumen angesagt.

Saludo
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 para el detaillierte Erklärung, nun es einleuchtend wieso como el Höhe / Breite * 2 es, porque Hotspot des Icons en el Mitte es

RGH (17.02.2016)
Das Cambio el Farbe beim Darüberfahren con ratón hecho Windows. Das Menü es a el Zeitpunkt sí ya suscrito.


Damit klärt el Cuestión danke
 
XProfan X3
TC-Programming [...] 
XProfan 8.0 - 10.0 - X2 - X3 - X4

18.02.2016  
 




Georg
Teles
Servus!

RGH (17.02.2016)
Das Cambio el Farbe beim Darüberfahren con ratón hecho Windows. Das Menü es a el Zeitpunkt sí ya suscrito.


verstehe Yo el correcto, heisst el, cada veces beim Fokusieren el Menü se IconToBitmap  ausgeführt ?

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

20.02.2016  
 



[OFFTOPIC]
RGH (17.02.2016)
Kann uno el komischen Code-Formatierer auch abschalten, así el Code así dargestellt se, Yo ihn geschrieben habe?


Sí, ahora, simplemente el Ver código fuente con un Ausrufezeichen beginnen - tener Su obigen Contribución entsprechend adaptado.

[/OFFTOPIC]
 
20.02.2016  
 




Respuesta


Título del Tema, max. 100 Signo.
 

Systemprofile:

Kein Systemprofil creado. [anlegen]

XProfan:

 Contribución  Font  Smilies  ▼ 

Bitte registro en una Contribución a verfassen.
 

Tema opciones

21.886 Views

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

Themeninformationen



Admins  |  AGB  |  Applications  |  Autores  |  Chat  |  Política de Privacidad  |  Descargar  |  Entrance  |  Ayuda  |  Merchantportal  |  Pie de imprenta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Juegos  |  Búsqueda  |  Support

Ein Projekt aller XProfan, el lo son!


Mi XProfan
Privado Noticias
Eigenes Ablageforum
Temas-Merkliste
Eigene Beiträge
Eigene Temas
Zwischenablage
Cancelar
 Deutsch English Français Español Italia
Traducciones

Política de Privacidad


Wir uso Cookies sólo como Session-Cookies wegen el technischen Notwendigkeit y en uns hay no Cookies de Drittanbietern.

Wenn du hier en unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung de Informationen en unseren Cookies en XProfan.Net a.

Weitere Informationen a unseren Cookies y dazu, como du el Kontrolle darüber behältst, findest du en unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Yo möchte no Cookie