QT: QImage всегда сохраняет прозрачный цвет как черный

Так как это было 9 лет назад, я знаю, что это слишком много лет назад. Я продолжаю практиковать C #, не заботясь о реализации rl. Я думаю, что у вашего поста нет цели наследования, OOAD или инкапсуляции (скрытие информации).

От вашего кода до моего кода здесь.

public class Anything
{
    private int data, data2; //field

    public Anything()
    {
        data = default(int);
    }
    public int Data { get; set; }
}

public class GenericParentClass<T>
{
    public static void StaticMethod(T data)
    {
        // do some job
    }

    public void InstanceMethod(T data)
    {
        // do some job
    }
}

public sealed class UsefulController<T> : GenericParentClass<T> where  T : Anything, new()
{
    //all static public methods must be placed before all non-static public methods. [StyleCop Rule: SA1204]
    public static new void StaticMethod(T data)  //'UsefulController'.StaticMethod(Anything) hides inherited member 'GenericParentClass<Anything>.StaticMethod(Anything)'. Use the new keyword if hiding was intended.
    {
        GenericParentClass<T>.StaticMethod(data);  //'data' is a variable but used like a type //arugement type T is not assignable to parameter type 'data'.
    }

    public void EncapsulatedStaticMethod()
    {
        T @class = new T(); //cannot create an instance of the variable type T because it does not have the new() constraint. //T is type and @class is variable and new is an instance.
        StaticMethod(@class);  
    }

    public void EncapsulatedInstanceMethod(T data)
    {
        base.InstanceMethod(data);
    }
}

public class Container
{
    public UsefulController<Anything>  B { get; set; }
}

public class Testing   
{
    public static void Main()
    {
        Anything @var = new Anything();
        var c = new Container();
        c.B.InstanceMethod(null);   
        c.B.EncapsulatedStaticMethod();    
        c.B.EncapsulatedInstanceMethod(var);  
    }
}
6
задан Charles Burns 11 October 2009 в 02:00
поделиться

3 ответа

Я бы попробовал что-то вроде этого (например, загрузить изображение, создать другое изображение того же размера, нарисовать фон, нарисовать изображение):

QImage image1("someFile.png"); 
QImage image2(image1.size());
image2.fill(QColor(Qt::white).rgb());
QPainter painter(&image2);
painter.drawImage(0, 0, image1);
image2.save("somefile.jpg", "JPG");
10
ответ дан 17 December 2019 в 02:30
поделиться

Jpeg не поддерживает прозрачность

-2
ответ дан 17 December 2019 в 02:30
поделиться

Верно, если вы хотите использовать Alpha Chanel (Transparent), вы должны сохранить imge в форматах *.png *.bmp

-2
ответ дан 17 December 2019 в 02:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: