| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Разработка Windows Forms > PictureBox |
| Автор: PaZ1T1V 21.3.2008, 15:18 | ||
| Народ, у меня снова проблемы:((( помогите решить знаю, 4то один топик - один вопрос, но .... вопрос1 можно ли симитировать рисование кистью, наприммер как в mspaint, fotoshop & etc ??? вопрос 2 как сохранить битмап ?? (знаю 4то ета тема уже поднималась )пишу так,
но вместо того 4то нарисовал сохраняется "черный квадрат", в прямом смысле етого слова вопрос 3 если вызываю колор диалог или перекрываю свою форму 4ем нибудь, то все то, 4то я нарисовал пропадает, как ето исправить Народ хелпМеПлиз(!!!) ЗЫ модераторы сильно меня не пенайте плиз, знаю 4то нарушаю уставы форума... Заранее спасибо всем принявшим у4астие в разрешении моих проблем |
| Автор: vponomarov 21.3.2008, 19:01 |
| ты все делаешь правильно, но есть один существенный вопрос: как же ты рисуешь? кода-то нигде нет если ты переодпределил метод Paint объекта pictureBox1, то в приведенном коде сохранения вместо pictureBox1.Invalidate(); нужно написать что-то типа pictureBox1_Paint(null, null); и все будет ок. |
| Автор: PaZ1T1V 21.3.2008, 19:10 | ||
рисую ..... хм простецки private void pictureBox1_MouseDown(object sender, MouseEventArgs e) { Pen newPen = myPen; myGraphix = pictureBox1.CreateGraphics(); if (buttonclicked == 1) { mouseX = e.X; mouseY = e.Y; penStyle(); myGraphix.DrawLine(newPen, mouseX, mouseY, mouseX + 1, mouseY + 1); } if (buttonclicked == 3) { mouseX = e.X; mouseY = e.Y; penStyle(); myGraphix.DrawLine(newPen, mouseX, mouseY, mouseX + 1, mouseY + 1); label2.Text = "X = " + mouseX.ToString(); label3.Text = "Y = " + mouseY.ToString(); } } private void pictureBox1_MouseMove(object sender, MouseEventArgs e) { Pen newPen = myPen; myGraphix = pictureBox1.CreateGraphics(); if (buttonclicked == 1) { if (e.Button == MouseButtons.Left) { penStyle(); myGraphix.DrawLine(newPen, mouseX, mouseY, e.X, e.Y); mouseX = e.X; mouseY = e.Y; label2.Text = "X = " + mouseX.ToString(); label3.Text = "Y = " + mouseY.ToString(); } } } |
| Автор: vponomarov 21.3.2008, 19:21 | ||
нк раз так, то по-моему нужно сохранять картинку таким образом:
|
| Автор: PaZ1T1V 21.3.2008, 19:31 |
| хм, так вообще дебаг вызывается счо словами object reference not set to an instance of an object то есть , помоему не находит ссылку откуда сохранять :((( |
| Автор: vponomarov 21.3.2008, 19:57 |
| в конструкторе формы проипиши: pictureBox1.Image=new Bitmap(); ну или что-то типа того |
| Автор: PaZ1T1V 21.3.2008, 20:04 |
| написал pictureBox1.Image = new Bitmap(pictureBox1.Width, pictureBox1.Height); , но все то же самое (, то есть сохраяет не рисунок, 4то я нарисовал а опять все тот же 4ерный квадрат |
| Автор: vponomarov 21.3.2008, 21:10 | ||||
вот рабочий вариант:
кривовато, но работает Добавлено через 3 минуты и 51 секунду о, а вот вариант по-лучше:
|
| Автор: PaZ1T1V 21.3.2008, 21:28 |
| гы, не работает во ета стро4ка, Graphics myGraphics.FromImage(pictureBox1.Image); дебажет со словами зна4ение не может быть равно нулю (Value cannot be null) |
| Автор: vponomarov 21.3.2008, 21:37 | ||
вот это написал?
у меня все воркает... Добавлено через 1 минуту и 44 секунды ты же говорил, что предыдущий пример заработал, но опять выдавал черный квадрат! |
| Автор: PaZ1T1V 21.3.2008, 22:41 | ||
| Ура, сейв заработал, но теперь стал дебажить Лоад помоги еще раз плиз вот код
заранее благодарен |
| Автор: rubbiroid 21.3.2008, 23:33 | ||
эээ... а саму картинку кто грузить будет?
|
| Автор: Dennnis 24.3.2008, 15:47 | ||
Лучше всего в данном случае пользоваться двойной буферизацией:
|
| Автор: vponomarov 24.3.2008, 16:01 |
| Dennnis, двойная буфферизация вещь без сомнения хорошая, но в данном случае от нее пользы никакой |
| Автор: Dennnis 24.3.2008, 16:04 |
| Да я просто не туда написал |