Witam.
Jestem nowy w programowaniu, i na tym forum również, mam za sobą 20+ tutoriali, odnośnie tego jak zrobić painta i jak zapisywać pliki graficzne z pictureboxa ale żaden z powyższych nie pomógł mi rozwiązać problemu.
Najpierw co muszę osiągnąć:
- wczytuję do pictureBoxa grafikę ( np za pomocą opendialog ).
- trzymając przycisk myszki mam narysować znak wodny ( ma być niewidoczny, ale możliwy do zdekodowania ) na tym obrazku.
- po zakończeniu edytowania, mam zapisać plik z niewidocznym znakiem wodnym.
- potem za pomocą innego programu ( lub tego samego ) porównać oryginał ze znakiem wodnym i w efekcie uzyskać różnicę z porównania czyli znak wodny.
Mam prawie wszystko... ale tylko prawie bo brak mi zapisu pliku z pictureboxa, a może raczej to co się zapisuje nie zawiera zmian wprowadzonych podczas edytowania... Plik owszem się zapisuje, ale bez znaku wodnego.
Mam nadzieję że wystarczająco nakreśliłem mój problem.
Teraz trochę kodów, zaznaczam że nie jest to pełny kod, gdyż programik zawiera trochę więcej funkcji a nie ma sensu zaśmiecać postu niepotrzebnymi procedurami. Chyba że okaże się że jest sens, wtedy owszem wkleję:
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (paint)
{
int green = 0;
Bitmap img = newBitmap(pictureBox1.Image);
Color originalColor = img.GetPixel(e.X, e.Y);
if ((originalColor.G % 2) == 0)
{ green = originalColor.G + 1; }
else
{ green = originalColor.G - 1; }
color =newSolidBrush(Color.FromArgb(originalColor.R, green, originalColor.B));
img.SetPixel(e.X, e.Y,Color.FromArgb(originalColor.R, green, originalColor.B));
Graphics g = pictureBox1.CreateGraphics();
g.FillEllipse(color, e.X, e.Y, 3, 3);
g.Dispose();
}
}
Program zmienia wyglad obrazka w PictureBoxie... z powodu opóźnień związanych z ruchem myszki widać przesunięcia w grafice... ale wygląda to jakby malował w powietrzu bo obrazek i tak jest nie tknięty... czy ktoś może pomóc??
Z góry dziękuję.