Sto lavorando a un programma in C# che cattura screenshot di una pozione dello schermo dell'utente. Per la maggior parte del pert funziona come dovrebbe, ma recentemente ho incontrato un problema. Sembra esserci (almeno) un colore di pixel che appare sempre trasparente nell'immagine di output. Qualsiasi istanza del colore # 0D0B0C (RGB 13, 11, 12) appare trasparente nella png salvata. Questo è con PixelFormat impostato su Format32bppArgb. Se lo metto in Format32bppRgb o Format24bppRgb, quello stesso pixel appare nero nel png salvato.Oggetto bitmap C#, il colore appare trasparente
Non ho idea di cosa potrebbe causare questo, ma l'unica cosa che sono stato in grado di fare per "risolvere" è quello di cancellare l'oggetto grafico a quel colore prima di fare CopyFromScreen(). Sono dispiaciuto di farlo anche se per pochi motivi. Innanzitutto, non so se questo è l'unico colore che presenta il problema (con 16.777.216 colori ci sono un bel po 'di possibilità), e in secondo luogo, io odio le correzioni di hacking, questa sembra una correzione di hacking.
Qualcuno può far luce su ciò che potrebbe causare questo problema? Ho incasinato PixelFormat nella creazione di bitmap e con CopyPixelOperation nel metodo CopyFromScreen, niente sembra funzionare. Il fatto che cancellare l'oggetto grafico con quel colore "corregge" sembra dirmi che la trasparenza proviene dai dati dello schermo stesso, ma questo non ha senso. Sono stato a guardare questo per troppo tempo, penso che ho bisogno di una nuova prospettiva su di esso. Se qualcuno ha qualche idea del perché questo potrebbe accadere mi piacerebbe sentirlo. Grazie.
Tutto quello che devi fare per diagnosticare è spostare il modulo sullo schermo e vedere se va via. Dubito molto seriamente che questo è il problema ... –
È più pixel e accade su più schermi/computer diversi, ed è sempre solo quel colore. Pensavo che il problema fosse risolto ma uno degli utenti del programma mi ha detto che stava ancora accadendo. – HaLo2FrEeEk