Так как это было 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);
}
}
Я бы попробовал что-то вроде этого (например, загрузить изображение, создать другое изображение того же размера, нарисовать фон, нарисовать изображение):
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");
Верно, если вы хотите использовать Alpha Chanel (Transparent), вы должны сохранить imge в форматах *.png *.bmp