From a32e3431a6d07faae98604d661b842970e1bb809 Mon Sep 17 00:00:00 2001 From: Nomango <569629550@qq.com> Date: Mon, 2 Oct 2017 08:41:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9B=BE=E7=89=87=E7=BC=93?= =?UTF-8?q?=E5=AD=98=E7=9A=84=E8=AE=BF=E9=97=AE=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Easy2D/Object/Image.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/Easy2D/Object/Image.cpp b/Easy2D/Object/Image.cpp index 23d21a54..6bc7c8d7 100644 --- a/Easy2D/Object/Image.cpp +++ b/Easy2D/Object/Image.cpp @@ -4,7 +4,7 @@ using namespace std; // 图片缓存 -static map s_mCImages; +static map s_mCImages; // 从图片缓存中读取图片 static CImage* GetCImage(tstring name, bool fromRes = false); // 对 PNG 图像进行像素转换 @@ -201,12 +201,13 @@ CImage* GetCImage(tstring name, bool fromRes) { if (s_mCImages.find(name) == s_mCImages.end()) { - CImage cImage; + CImage* cImage = nullptr; // 加载图片 if (fromRes) { + cImage = new CImage(); // 从资源加载图片(不支持 PNG) - cImage.LoadFromResource(GetModuleHandle(NULL), name.c_str()); + cImage->LoadFromResource(GetModuleHandle(NULL), name.c_str()); } else { @@ -215,20 +216,21 @@ CImage* GetCImage(tstring name, bool fromRes) { return nullptr; } - cImage.Load(name.c_str()); + cImage = new CImage(); + cImage->Load(name.c_str()); } // 加载失败 - if (cImage.IsNull()) + if (!cImage || cImage->IsNull()) { return nullptr; } // 确认该图像包含 Alpha 通道 - if (cImage.GetBPP() == 32) + if (cImage->GetBPP() == 32) { // 透明图片处理 - CrossImage(cImage); + CrossImage(*cImage); } - s_mCImages.insert(map::value_type(name, cImage)); + s_mCImages.insert(map::value_type(name, cImage)); } - return &s_mCImages.at(name); + return s_mCImages.at(name); } \ No newline at end of file