እያንዳንዱ የቢፒኤም ምስል ከ RGB ሞዴል (ስለ ሶስት ቀለሞች አር - ቀይ ፣ ጂ - አረንጓዴ ፣ ቢ - ሰማያዊ) ስላለው ቀለሙ መረጃውን ይይዛል ፡፡ የእያንዳንዱ አካል እሴት በ 00… FF ክልል ውስጥ ባለበት የ ‹Xx› ቅርጸት (ሄክሳዴሲማል) ውስጥ የ RGB ቀለም ዋጋን ለማከማቸት የበለጠ አመቺ ነው ፡፡ ጥምረት 000000 ከጥቁር ፣ FFFFFF - ወደ ነጭ ጋር ይዛመዳል።
ለመጀመር ፣ የስዕል ሥም ቦታውን እንክፈት-
ሲስተም በመጠቀም
የ Bitmap ክፍልን አዲስ ምሳሌ እንፍጠር-
Bitmap bmp = አዲስ Bitmap ("c: / 1.bmp") / / c: / 1.bmp - የምስል አድራሻ
የፒክሴል ቀለም ዋጋን ለማከማቸት የተለየ መስሪያዎችን መፍጠር ይችላሉ ፣ የእሱ መስኮች የ RGB አካላት ናቸው ፣ ግን የቀለም ክፍልን ከ ‹Drawing› የስፔስ ቦታ ለመጠቀም ወሰንኩ ፡፡ ቀለሙን ለማግኘት GetPixel (x, y) ዘዴን እንጠቀማለን ፣ x ፣ y የምስል ፒክሰል መጋጠሚያዎች ባሉበት። ከቀለማት ክፍል ምሳሌ ይልቅ ቀለሙን ለማከማቸት የራስዎን መዋቅር ለመጠቀም ከፈለጉ ፣ “x” አር ፣ ባለ ‹RGB› አንድ ነጠላ የ ‹RGB› አካል ለማግኘት የ bmp. GetPixel (x, y).x ዘዴን መጠቀም ይችላሉ ፡፡ ጂ ፣ ወይም ቢ
ቀለም [,] ቀለም = አዲስ ቀለም [bmp. Width, bmp. ቁመት];
ለ (int y = 0; y <bmp. Height; y ++)
ለ (int x = 0; x <bmp. Width; x ++)
{
ቀለም [x, y] = bmp. GetPixel (x, y);
}
የቀለም እሴቶችን ወደ ፋይል ለመጻፍ የ StreamWriter ክፍልን እንጠቀማለን። የቀለም ምሳሌው አር ፣ ጂ ፣ ቢ አካላት ባይት ዓይነት በመሆናቸው የ “ቶስትሪንግ” (“X2”) ዘዴን በመጠቀም የ ‹አርጂጂ› አባላትን የሄክስ እሴቶችን ወደሚያስቀምጥ ወደ ሕብረቁምፊ ዓይነት እንለውጣቸዋለን ፡፡
StreamWriter steamWriter = አዲስ StreamWriter ("c: / 1.txt");
ለ (int y = 0; y <bmp. Height; y ++)
{
ለ (int x = 0; x <bmp. Width; x ++)
{
steamWriter. Write (ቀለም [x, y]. R. ToString ("X2"));
steamWriter. Write (ቀለም [x, y]. G. ToString ("X2"));
steamWriter. Write (ቀለም [x, y]. B. ToString ("X2") + ");
}
steamWriter. WriteLine ();
}
steamWriter. Close ();
አሁን የተገላቢጦሽ ሥራውን እናከናውን - የተገኘውን የጽሑፍ ፋይል ወደ ምስል ቀይር ፡፡
በ StreamReader እገዛ ከፋይሉ መረጃ እናነባለን።
StreamReader txtFile = አዲስ StreamReader ("c: / 1.txt");
የምስሉን ስፋት እና ቁመት እናሰላለን ፡፡ እያንዳንዱ ፒክሰል 6 ቁምፊዎችን እና 1 ክፍተቶችን ስለሚወስድ እና በመጨረሻ ምንም ክፍተት ስለሌለ ስፋቱን ለማስላት የሚከተሉትን ቀመር እንጠቀማለን ፡፡
ቴምፕ = txtFile. ReadLine ();
ስፋት = (ቴምፕሬስ ርዝመት + 1) / 7;
የምስል ቁመት በፋይሉ ውስጥ ያሉት የመስመሮች ብዛት ነው
(! txtFile. EndOfStream)
{
txtFile. ReadLine ();
ቁመት ++;
}
ቁመት ++;
በፋይሉ ውስጥ የተነበበውን ጠቋሚ ወደ መጀመሪያው ያንቀሳቅሱት-
txtFile. DiscardBufferedData ();
የ Bitmap ክፍልን አዲስ ምሳሌ ይፍጠሩ-
Bitmap bmp2 = አዲስ Bitmap (ስፋት ፣ ቁመት);
የተከፈለውን ዘዴ በመጠቀም የማትሪክስ ክፍሎችን እንከፍላለን ፡፡ የባይተሩን ዓይነት ሦስት ተለዋዋጮችን እናውጃለን - አር ፣ ጂ ፣ ቢ የፓርሲ እና ንዑስ-መርጫ ዘዴዎችን በመጠቀም የቀለሙን አካላት በተናጠል ይምረጡ ፡፡
በዚህ ቀለም ውስጥ ያለውን ፒክስል ለመሙላት የ SetPixel (j, i, Color. FromArgb (R, G, B)) ዘዴን ይጠቀሙ ፣ የት እኔ ፣ የምስል መጋጠሚያዎች ፣ ቀለም ፡፡) አወቃቀሩን የሚፈጥር ዘዴ ነው ቀለም።
ለ (int i = 0; i <ቁመት; i + +)
{
ቴምፕ = txtFile2. ReadLine ();
ሕብረቁምፊ substring = temp. Split ( );
ለ (int j = 0; j <ስፋት; j + +)
{
R = byte. Parse (ንጣፍ [j]። ንዑስ ገመድ (0, 2) ፣
ሲስተም. ግሎባላይዜሽን ቁጥር-ሴልስስ.
G = byte. Parse (ንጣፍ [j]። ንጥል ገመድ (2, 2) ፣
ሲስተም. ግሎባላይዜሽን ቁጥር-ሴልስስ.
B = byte. Parse (ንጣፍ [j]። ንጣፍ (4, 2) ፣
ሲስተም. ግሎባላይዜሽን ቁጥር-ሴልስስ.
bmp 2. SetPixel (j, i, Color. FromArgb (R, G, B));
}
}
አሁን ምስሎቹን ማስቀመጥ ይችላሉ ፡፡ በዊንዶውስ ፎርም ውስጥ የሚሰሩ ከሆነ የ “SaveFileDialog” ክፍልን መጠቀም ይችላሉ-
SaveFileDialog saveImage = አዲስ SaveFileDialog ();
saveImage. Filter = bmp files (*. bmp) | *. bmp | ሁሉም ፋይሎች (*. *)
| *. * ;
saveImage. ShowDialog ();
bmp2. Save (saveImage. FileName);