Original geschrieben von axeljaeger
Ich hab die Möglichkeiten getestet, die mir Mandrake Linux bietet. Das ist wahrscheinlihc XFree86. Möglicherweise gibt es kommerzielle Systeme, die das anders handhaben, aber die habe ich mit der Installation einer gängigen Distribution nicht zur Verfügung.
Nunja, dann schlage ich vor, du bist bishen vorsichtiger mit "wird es nie geben"- oder "geht unter X11 nicht"-Behauptungen
Es kann schon sein, das ThinClient-Lösungen gefragt sind, aber das ist kein Argument, die Transparenzen nicht anzubieten.
Nein, hab ich auch nie behauptet. Aber es ist ein Argument gegen das Fallenlassen der Netzwerktransparenz, was komischerweise immer wieder als Allheilmittel hingestellt wird, wo es doch eigentlich keine Einschränkung darstellt.
Scheint auf einer komische Logik zu fußen: "Windows ist nicht netzwerktransparent und hat visuelle Gimicks, daher muss offensichtlich die Netzwerktransparenz in X11 Schuld sein, dass es diese Gimicks nicht gibt".
Das mit den runden Fenstern wird übrigens richtig ekelhaft, wenn man runde OpenGL-Contexte verwendent und dann Render2Texture macht.
Glaub ich dir gerne, da hat du mehr Erfahrung als ich.
Ich benutze ja nicht mal Applikationen mit runden Fenstern, geschweige denn, dass ich sowas programmiert hätte.
Ich nutze auch Qt, aber weist du, warum der QPainter kein Alphablending kann? Weil das unter X11 nicht zu realisieren ist. Ich wette mit dir, wenn Alphablending unter X11 verfügbar ist, wird das auch in Qt verwendet. Auf den anderen Zielplatformen steht das ja schon zur Verfügung.
Ich denke die Wette hast du schon gewonnen, hab es gerade ausprobiert und QPainter hatte kein Problem mit dem Alphachannel
Code:
#include <qapplication.h>
#include <qimage.h>
#include <qlabel.h>
#include <qpainter.h>
#include <qpixmap.h>
int main(int argc, char** args)
{
QApplication app(argc, args);
QImage image(256, 256, 32);
image.setAlphaBuffer(true);
for (uint y = 0; y < 256; ++y)
{
for(uint x = 0; x < 256; ++x)
{
image.setPixel(x, y, qRgba(255, 0, 0, x));
}
}
QPixmap pixmap(256, 256);
QPainter painter;
painter.begin(&pixmap);
painter.fillRect(0, 0, 256, 256, Qt::blue);
painter.drawImage(0, 0, image);
painter.end();
QLabel label(0);
label.resize(256, 256);
label.setPixmap(pixmap);
app.setMainWidget(&label);
label.show();
return app.exec();
}
Ciao,
_
Lesezeichen