思路
首先将路径写好,然后确认对应路径中是否有该图片。若有,读取图片即可。
代码如下:
CImage imgimg.Load(L"c:\\1.jpg")
CImage img
wstring filename
cout<<"输入图片文件路径:"
scanf("%ws",filename)
img.Load(filename)
//CImage 加载带半透明png函数void LoadCImage(CImage*pImage,LPCTSTRpPath)
{
pImage->Load(pPath)
if (pImage->IsNull())
{
return
}
CImageTransparent(pImage)
}
/* 解决CIMAGE 绘制半透图片背景不能半透的问题*/
void CImageTransparent(CImage*pImage)
{
if (pImage->GetBPP() == 32) //确认该图像包含Alpha通道
{
for (inti=0i<pImage->GetWidth()i++)
{
for(int j=0j<pImage->GetHeight()j++)
{
byte*pByte = (byte*)pImage->GetPixelAddress(i, j)
pByte[0]= pByte[0] * pByte[3]/ 255
pByte[1]= pByte[1] * pByte[3]/ 255
pByte[2]= pByte[2] * pByte[3]/ 255
}
}
}
}
构造函数 ,是一种特殊的方法。主要用来在创建对象时初始化对象, 即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。特别的一个类可以有多个构造函数 ,可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载。JAVA例子
1
2
3
4
5
6
7
8
9
public class UserManagerImpl implements UserManager {
private UserDao userDao
public UserManagerImpl(UserDao userDao){
this.userDao=userDao
}
public void save(String username,String password){
this.userDao.save(username, password)
}
}
注意: 由于Java不允许像C++那样为函数的参数提供缺省值,因此在构造函数中也不能使用缺省值.
构造函数的特点:
1.它的函数名与类名相同;
2.它可以重载;
3.不能指定返回类型,即使是void也不行;
4.虽然在一般情况下,构造函数不被显式调用,而是在创建对象时自动被调用。但是并不是不能被显示调用。有些时候是一定要显示调用的,只要是父类有带参的构造函数,在子类中就必须显示的调用父类的构造函数,因为子类的构造器在实例化时无法找到父类的构造函数(当父类有自己写的无参构造函数时,子类也不用显示调用)。