Estoy bastante seguro de que necesita GDI+ hacerlo así, pero debería estar allí con GDI:
//in rendering function
using namespace Gdiplus;
Graphics g (hdc);
SolidBrush brush (Color (127 /*A*/, 0 /*R*/, 0 /*G*/, 255 /*B*/));
g.FillRectangle (&brush, 0, 0, width, height);
En el lado positivo, GDI +, aunque no tan rápido , tiene mayores capacidades y resultados visuales, y está orientado a objetos, lo que significa que no necesita preocuparse por todas esas llamadas SelectObject
y DeleteObject
.
Tenga en cuenta que hay un par de extra steps al inicializar/final del programa con el fin de utilizar GDI +, y que todo está en el espacio de nombres Gdiplus
, y -lgdiplus
.
Si realmente necesita GDI, la única solución que conozco es AlphaBlend, que en realidad es un método más complejo que simplemente dibujar formas en el contexto del dispositivo. Siempre es bueno comenzar con GDI +, ya que todavía está en uso, y es mucho más fácil de usar que GDI.
No creo que GDI + ¿No es más rápido que GDI es? GDI está acelerado por hardware, pero no así para GDI + (por lo que he leído). –
@SethCarnegie, no he leído demasiado, pero recuerdo que era más rápido. Al mirarlo, parece que tienes razón. GDI + todavía tiene más capacidad y produce mejores imágenes. Si realmente te preocupa la velocidad (y la calidad al mismo tiempo), DirectX es un candidato extremadamente bueno. – chris
Sí, no hay duda de que GDI + produce mejores imágenes y tiene más capacidad. +1. –