CResim::CResim(void) { BitmapVeri = NULL; pResimDosyaBaslik = NULL; pVeriBasligi= NULL; hBitmap = NULL; } CResim::CResim(HBITMAP _hBitmap) { BitmapVeri = new Byte(); pResimDosyaBaslik = NULL; hBitmap =_hBitmap; ResimYukle(); } CResim::CResim(Byte& _BitmapVeri) { BitmapVeri = NULL; pResimDosyaBaslik = NULL; pVeriBasligi = NULL; hBitmap = NULL; ResimCiz(_BitmapVeri); } CResim::~CResim(void) { if(BitmapVeri != NULL) this->BitmapVeri->Kaldir(); if(hBitmap != NULL) DeleteObject(hBitmap); delete BitmapVeri; } bool CResim::ResimYukle() { if(GetObject(hBitmap,sizeof(Resim),(PResim)this)) { DWORD ResimBoyutu = ((Genislik * PixelBits + 31 ) / 32) * 4 * Yukseklik; BitmapVeri->YeniOlustur(sizeof(BitmapVeriBaslik) + ResimBoyutu); pVeriBasligi = (BitmapVeriBaslik*) (void*)*BitmapVeri; pVeriBasligi->strBoyut = sizeof(BitmapVeriBaslik); pVeriBasligi->Genişlik = this->Genislik; pVeriBasligi->Yukseklik = this->Yukseklik; pVeriBasligi->Yuzeyler = YuzeyAdet; pVeriBasligi->BitAdet = PixelBits; pVeriBasligi->SikistirmaTipi = BI_RGB; pVeriBasligi->ResimBoyutu = ResimBoyutu; HDC DC = GetDC(NULL); HDC MEMDC = CreateCompatibleDC(DC); if(MEMDC != NULL) { char* Buffer = (char*)pVeriBasligi; Buffer = Buffer + pVeriBasligi->strBoyut; GetDIBits(MEMDC,hBitmap,0,Yukseklik,Buffer,(LPBITMAPINFO)pVeriBasligi,DIB_RGB_COLORS); DeleteDC(MEMDC); ReleaseDC(NULL,DC); return true; } } return false; } bool CResim::ResimCiz(Byte& Veri) { // Verinin Basinda BitmapDosyaBasligi Her Zaman BitmapDosyaBasligi var. pResimDosyaBaslik = (BitmapDosyaBasligi*)&Veri; // BitmapDosyaBasligi Altında Ise BitmapDosyaBilgileri yer alıyor. Baslangic+BitmapDosyaBasligi = BitmapDosyaBilgileri pVeriBasligi = (BitmapVeriBaslik*) ( &Veri+ (sizeof(BitmapDosyaBasligi)) ) ; // -> CResim Sinifina ait ResimVeri Butun Dosya Verilerini Tutuyor.(Baslik+ DosyaBilgileri + Veri) BitmapVeri = &Veri; // Resim veri baslangic adresini Buffer pointerina aktar. void* Buffer = (char*)Veri + pResimDosyaBaslik->VeriOffset; // Resim yaratildiktan sonra RenkTablosunu alabilmek icin gerekli structure BitmapBilgiler bilgiler; hBitmap = CreateDIBitmap(GetDC(NULL),(LPBITMAPINFOHEADER)pVeriBasligi,CBM_INIT,Buffer,(LPBITMAPINFO)&bilgiler,DIB_RGB_COLORS); if(hBitmap != NULL) { Genislik = pVeriBasligi->Genişlik; Yukseklik = pVeriBasligi->Yukseklik; PixelBits = pVeriBasligi->BitAdet; YuzeyAdet = pVeriBasligi->Yuzeyler; bmiColor[1] = bilgiler.ColorTable[1]; return true; } return false; } Byte* CResim::ByteCevir() { return NULL; } CResim::operator HBITMAP() { return hBitmap; }