Utworzyłem klasę obrazu, która ładuje bitmapę, a następnie rysuje i obsługuje bitmapę, ale kiedy tworzę wektor tej klasy obrazu i ładuję bitmapę 3 obiektów Ostatni obiekt (3.) ustawia wszystkie obiekty na mapę bitową.
Ładowanie bitmap:
PlayerCard[0].GetBitmap(L"program files/Creature Cards/Mana_Wyrm.png");
PlayerCard[1].GetBitmap(L"program files/Creature Cards/Snowchugger.png");
PlayerCard[2].GetBitmap(L"program files/Creature Cards/Water_Elemental.png");
To, co renderuje w oknie, to 3 żywiołaki wody.
GetBitmap (wchar_t * nazwa pliku): Funkcja obrazu
CoCreateInstance(CLSID_WICImagingFactory, 0, CLSCTX_INPROC_SERVER, IID_IWICImagingFactory, (LPVOID*)&wicFactory);
wicFactory->CreateDecoderFromFilename(filename, 0, GENERIC_READ, WICDecodeMetadataCacheOnLoad, &wicDecoder);
wicDecoder->GetFrame(0, &wicFrame);
wicFactory->CreateFormatConverter(&wicConverter);
wicConverter->Initialize(wicFrame, GUID_WICPixelFormat32bppPBGRA, WICBitmapDitherTypeNone, 0, 0.0, WICBitmapPaletteTypeCustom);
graphics.GetRenderTarget()->CreateBitmapFromWicBitmap(wicConverter, 0, &bmp);
if (wicFactory) wicFactory->Release();
if (wicDecoder) wicDecoder->Release();
if (wicFrame) wicFrame->Release();
if (wicConverter) wicConverter->Release();
Nagłówek obrazu: Image.h
public:
void PassGraphics(Graphics gfx);
void Init();
void Unload();
void GetBitmap(wchar_t* filename);
void Draw(float x, float y);
private:
IWICImagingFactory *wicFactory;
IWICBitmapDecoder *wicDecoder;
IWICBitmapFrameDecode *wicFrame;
IWICFormatConverter *wicConverter;
ID2D1Bitmap* bmp;
Graphics graphics;
Odpowiedzi:
0 dla odpowiedzi № 1Nie jestem pewien dlaczego, ale problemem była pętla for, która została użyta do narysowania obrazów wektorowych.
for (float i = 0; i <= 769; i += 384)
{
for (int c = 0; c < 3; c++)
{
PlayerCard[c].Draw(i, 100);
}
}
Zastąpiłem tę pętlę dla funkcji ręcznego wywoływania losowania.
PlayerCard[0].Draw(0, 100);
PlayerCard[1].Draw(384, 100);
PlayerCard[2].Draw(769, 100);