2010-12-13 65 views
0

Ok, c'est étrange. D'énormes accessoires à la personne qui le sait.L'objet bitmap transforme rgb (13,11,12) en rgb (211,211,211)?

J'ai ce code, qui recadre une partie d'une image, et la place dans bmpCropped.

void CropImage() 
    { 
     int W = nowX - StartX; 
     int H = nowY - StartY; 

     if (W > 0 && H > 0) 
     { 
      bmpCropped = new Bitmap(W, H); 
      Graphics gfxCropped = Graphics.FromImage(bmpCropped); 
      gfxCropped.DrawImage(bmpOriginal, new Rectangle(0, 0, W, H), new Rectangle(StartX, StartY, W, H), GraphicsUnit.Pixel); 
     } 
    } 

Pour une raison étrange, toutes les couleurs qui ont des valeurs RVB de R: 13, G: 11, B: 12 ​​sont modifiés à R: 211, G: 211, B: 211. Notez le DrawImage? bmpCropped est dessiné sur l'écran, où je ne vois pas du tout 211 211 211. Mais si je sauve l'image en utilisant bmpCropped.Save (...), je vois le 211,211,211. Quelqu'un a des indices sur pourquoi et comment cela se passe, et si je peux contourner ce problème sans changer le pixel à une couleur différente?

+0

Dans quel format économisez-vous? – casablanca

+0

Cela arrive à la fois avec jpg et png. – Codecat

+0

J'ai également essayé d'autres combinaisons de couleurs, comme 11,12,13, mais ce n'est vraiment que 13,11,12. Rien d'autre. – Codecat

Répondre

2

Cela ressemble à un bitmap source transparent utilisant une clé de transparence. La couleur d'arrière-plan de votre destination s'affiche à travers les pixels transparents.

+0

Je l'ai corrigé en créant un nouvel objet graphique qui s'assurait d'avoir le PixelFormat correct. Merci! – Codecat