21/07/10 14:46
kapooo
Salve a tutti primo post
Ho un problema con GDI+. Ho necessità di disegnare su un immagine un quadratino di un certo colore (es. Rosso) e di farlo muovere in determinate posizioni. Dato che GDI+ non permette la traslazione di un disegno ma deve essere prima traslato e poi ridisegnato nella nuova posizione, sorge la necessità di cancellare il triangolino vecchio.
Per farlo avevo pensato di usare il metodo MakeTrasparent(Color) impostando come colore da rendere trasparente il rosso proprio quello del quadratino disegnato.
Codice:
Graphics^ g = CreateGraphics();
Pen^ pen = gcnew Pen(System:rawing::Color::Red);
SolidBrush^ brush = gcnew SolidBrush(System:rawing::Color::Red);
Bitmap^ sfondo = gcnew Bitmap("sfondo.jpg"
g->DrawImage(sfondo,0,0);
g->DrawRectangle(pen, x, y, 9.0F, 9.0F);
g->FillRectangle(brush,x,y,9.0F,9.0F);
Color backColor =sfondo->GetPixel(x+1,x+1);
sfondo->MakeTrasparent(backColor);
g->DrawImage(sfondo, sfondo->Width,0);
Quello che accade è che il colore che si trova a x+1,y+1 (è rosso) viene effettivamente reso trasparente su sfondo.jpg ma rede trasparente i quadratini.
E' come se DrawRectangle creasse i quadratini su un layer superiore all'immagine e quindi il metodo MakeTrasparent non li "vede".
Sapete aiutarmi??
Ho un problema con GDI+. Ho necessità di disegnare su un immagine un quadratino di un certo colore (es. Rosso) e di farlo muovere in determinate posizioni. Dato che GDI+ non permette la traslazione di un disegno ma deve essere prima traslato e poi ridisegnato nella nuova posizione, sorge la necessità di cancellare il triangolino vecchio.
Per farlo avevo pensato di usare il metodo MakeTrasparent(Color) impostando come colore da rendere trasparente il rosso proprio quello del quadratino disegnato.
Codice:
Graphics^ g = CreateGraphics();
Pen^ pen = gcnew Pen(System:rawing::Color::Red);
SolidBrush^ brush = gcnew SolidBrush(System:rawing::Color::Red);
Bitmap^ sfondo = gcnew Bitmap("sfondo.jpg"
g->DrawImage(sfondo,0,0);
g->DrawRectangle(pen, x, y, 9.0F, 9.0F);
g->FillRectangle(brush,x,y,9.0F,9.0F);
Color backColor =sfondo->GetPixel(x+1,x+1);
sfondo->MakeTrasparent(backColor);
g->DrawImage(sfondo, sfondo->Width,0);
Quello che accade è che il colore che si trova a x+1,y+1 (è rosso) viene effettivamente reso trasparente su sfondo.jpg ma rede trasparente i quadratini.
E' come se DrawRectangle creasse i quadratini su un layer superiore all'immagine e quindi il metodo MakeTrasparent non li "vede".
Sapete aiutarmi??
aaa