Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VC++ 6.0: Ongelma BitBlt funktion kanssa

Delrauch [30.07.2004 14:29:06]

#

Nii, että ongelma on yksinkertaisuudessaan tälläinen:

Pitäisi saada kopioitua yhdestä bitmapista toiseen bitmappiin tietty kohta.

Jos joku avulias voisi vaikka pastettaa koodiesimerkin tms.

Metabolix [30.07.2004 16:24:24]

#

BitBlt kopioi HDC:ltä toiselle. Jos tarkentaisit ongelmaasi hieman, auttaminen voisi olla helpompaa. Siis missä nämä bitmapit ovat? Oletko ladannut ne muistiin?

Mikäli olet saanut aikaan kaksi HBITMAPia, homma näyttää tältä:

// Omistat jo:
// HBITMAP Kuva_Jolle_Piirretaan, Kuva_Josta_Piirretaan;
int Leveys, Korkeus, X, Y, LahteenX, LahteenY;

HDC hdc1, hdc2;
HBITMAP Temp1, Temp2;
Temp1 = (HBITMAP)SelectObject(hdc1, Kuva_Jolle_Piirretaan);
Temp2 = (HBITMAP)SelectObject(hdc2, Kuva_Josta_Piirretaan);
BitBlt(hdc1, X, Y, Leveys, Korkeus, hdc2, LahteenX, LahteenY, SRCCOPY);
SelectObject(hdc1, Temp1);
SelectObject(hdc2, Temp2);
DeleteDC(hdc1);
DeleteDC(hdc2);

Tällä siis piirretään kohtaan (X, Y) kuva, jonka mitat ovat (Leveys, Korkeus) ja joka otetaan alkaen toisen kuvan kohdasta (LahteenX, LahteenY).
Muistathan, että Y-koordinaatit kasvavat alaspäin.

Delrauch [30.07.2004 17:20:09]

#

Kiitti, toi autto. Lähinnä se ongelma oli tossa Hdc:n alustamisessa tai jotain sellast...

Metabolix [30.07.2004 18:59:10]

#

Hyvä jos auttoi. Tuosta näköjään unohtui nämä:

hdc1 = CreateCompatibleDC(GetDC(hWnd));
hdc2 = CreateCompatibleDC(GetDC(hWnd));

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta