Ayúdeme con el canal alfa en HDC. Hago HDC dc throw CreateCompatibleDC. Luego llama a CreateDIBSection y puedes encontrar bytes de imagen en la memoria. Luego llama DrawFrameControl a esta dc. Todo funciona, pero en la memoria hay 4 bytes por píxel y el canal alfa se llena en 00. Incluso si antes había FF. Pero necesito un canal alfa ¿Cómo puedo hacer que DrawFrameControl establezca valores alpha reales o simplemente no los toque? Gracias. Y perdón por el inglés malo :(Canal alfa en DeviceContext (HDC)
Respuesta
No se puede hacer que GDI no escriba en el byte alfa/reservado de un mapa de bits de cuatro bytes por GDI. GDI no es realmente consciente de alfa, con la excepción de un par de funciones como AlphaBlend
. Sin embargo, puede utilizar el conocimiento que se escribe y se restablece el alfa a 0 saber qué píxeles que escribió a, y fijar manualmente la alfa después.
para obtener más información, lea estos tres artículos:
- Transparent Graphics with GDI, Part 1
- Transparent Graphics with GDI, Part 1 1/2
- Transparent Graphics with GDI, Part 2
Los dos primeros probablemente le dará suficiente información para lograr lo que quiere.
Estos artículos tienen un enfoque genérico para manejar alfa con funciones GDI, escaneando los píxeles donde el alfa fue eliminado y corrigiéndolo (y entra en técnicas más avanzadas para dibujar varias cosas una encima de la otra, con la alfa correcta.) FrameRect
dibuja un rectángulo donde las líneas son de una unidad de ancho y alto. Puede que le resulte más eficiente dibujar líneas, o incluso editar directamente el mapa de bits de píxeles en la memoria, para dibujar líneas rectas en la memoria. Esto evita tener que escanear todo el mapa de bits en busca de píxeles dibujados con GDI. Después de todo, dado que es un rectángulo con bordes de una unidad de ancho, usted sabe exactamente a qué píxeles se acercará y puede editarlos usted mismo.
- 1. canal alfa incoherente en three.js
- 2. Mostrar PNG con canal alfa en C#
- 3. Reproducción nativa de Android con canal alfa
- 4. Mapa de imagen por canal alfa
- 5. OpenGL ES 2.0 PNG canal alfa
- 6. Agregar canal alfa a un color determinado
- 7. ImageIO ignora el canal alfa PNG
- 8. canal alfa en ggplot2 no funciona después de instalar 2.15
- 9. Haga clic a través de div con un canal alfa
- 10. Lienzo: ¿enmascarar una imagen y preservar su canal alfa?
- 11. Representación hexagonal de un color con canal alfa?
- 12. OpenCV 2.4 Jpeg a PNG con canal alfa
- 13. WPF - ¿Cómo guardo un PNG sin ningún canal alfa?
- 14. Compartir HDC entre diferentes procesos
- 15. Editar solo capa alfa en GIMP
- 16. ¿Cómo puedo obtener una imagen del portapapeles sin perder el canal alfa en .NET?
- 17. ¿Cómo encontrar el valor de transparencia del canal alfa de un píxel en una imagen png?
- 18. Rendimiento XAML: establece el canal alfa de un pincel frente a la opacidad de FrameworkElement
- 19. Cómo dibujar mapas de bits de canal alfa de 32 bits?
- 20. ¿Puedo usar libjpeg para leer archivos JPEG con un canal alfa?
- 21. Cómo renderizar un cursor transparente al mapa de bits preservando el canal alfa?
- 22. PHP GD2: cómo mantener la transparencia del canal alfa y corregir gamma
- 23. Convierta .mov a .mp4 y mantenga el canal alfa usando FFMPEG
- 24. Cómo crear un Gdiplus :: Bitmap desde un HBITMAP, conservando la información del canal alfa?
- 25. Establecer la máscara alfa BufferedImage en Java
- 26. con baja alfa - subvista con alta alfa
- 27. ¿Cómo puedo obtener un objeto HDC de un objeto CDC?
- 28. Mezcla alfa variable en pylab
- 29. Enmascaramiento alfa en C# System.Drawing?
- 30. Android y configuración alfa para (imagen) vista alfa