Модераторы: Partizan, gambit

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужна помощь в рисовании изображения поверх png 
V
    Опции темы
andreyn
Дата 6.4.2008, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.4.2008

Репутация: нет
Всего: нет



Здравствуйте!Подскажите плз, как реализовать следующее:
человек заходит на страничку, щелкает по рисунку (ImageButton1), в том месте куда он щелкнул должен прорисоваться маленький прямоугольник 2х2пкс поверх картинки. Остальное оформление страницы должно остаться неизменным. У меня не получается одновременно прорисовать и картинку и прямоугольник. Перепробовал кучу методов.
Как вариант можно ничего не прорисовывать на экране, а вносить изменения в файл картинки.Т.е. чел щелкнул по картинке, произошло добавление прямоугольника но без вывода на экран, а затем эти изменения записались в файл (картинка).
Сори если запутано.
PM MAIL   Вверх
vponomarov
Дата 6.4.2008, 21:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



в обработчике MouseDown пишешь что-нить типа такого
Код

            Graphics g = Graphics.FromImage(pictureBox2.Image);
            g.FillRectangle(Brushes.Black, e.X, e.Y, 2, 2);
            pictureBox2.Invalidate();



--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
andreyn
Дата 6.4.2008, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.4.2008

Репутация: нет
Всего: нет



vponomarov, спасибо за ответ, но скажите пож-ста, что за компонент PictureBox2, как его вставить на страницу? пробую писать в VS2005 там такого нет, покрайней мере в разработке для веб. 
Можно пример обработчика MouseDown? 
извините, я не ламер, но крайне мало программировал на C#.
Спасибо!
PM MAIL   Вверх
vponomarov
Дата 7.4.2008, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



andreyn, PictureBox2 был взят для примера (это из Windows Forms).
можно использовать любой компонент содержащий Image.

Цитата(andreyn @  6.4.2008,  22:54 Найти цитируемый пост)
Можно пример обработчика MouseDown? 

а как вы вообще обрабатываете собитие нажатия на вашу кнопку? smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
andreyn
Дата 7.4.2008, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.4.2008

Репутация: нет
Всего: нет



vponomarov, в данном случае происходит обработка стандартного события ImageButton.
Часть кода,
Код

 protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
    {
        Panel1.Visible = true;
        Label1.Text = e.X.ToString() + "," +
                     e.Y.ToString() ;

а рисование я дописываю ниже. Или я не прав?
Просто я не силен в этом, как самому создать событие на примере MouseDown ..?

PM MAIL   Вверх
vponomarov
Дата 7.4.2008, 12:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



andreyn, без вопросов, это вам решать на какое событие вешать действие.
просто в Windows Forms при событии Click нельзя получить координаты места щелчка.
а так все правильно.


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
mr.DUDA
Дата 7.4.2008, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



Чтобы рисовать что-то на контроле, нужно подписаться на его событие Paint и рисовать там.


--------------------
user posted image
PM MAIL WWW   Вверх
andreyn
Дата 7.4.2008, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.4.2008

Репутация: нет
Всего: нет



mr.DUDA, поясните пож-ста. Просто ImageButton1.Paint ..такого нет, или я не понимаю.
PM MAIL   Вверх
vponomarov
Дата 7.4.2008, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



mr.DUDA, не согласная я smile 
мною предложенный способ позволяет не подписываться на OnPaint и не нужно запоминать, что там пользователь наклацал smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
mr.DUDA
Дата 7.4.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 110
Всего: 232



vponomarov, для пикчербокса - да, т.к. есть картинка smile, а в общем случае не прокатит (например на панели).


--------------------
user posted image
PM MAIL WWW   Вверх
vponomarov
Дата 7.4.2008, 14:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



mr.DUDA, в общем случае - да, не покатит.
но была ж поставлена конкретная задача smile 


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
andreyn
Дата 7.4.2008, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.4.2008

Репутация: нет
Всего: нет



mr.DUDA
vponomarov
Спасибо большое, скажите тогда уж, что значит подписаться на событие, на примере Paint.

PM MAIL   Вверх
vponomarov
Дата 7.4.2008, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



andreyn, в концептуальном плане - тоже самое, что подписаться на событие нажатия мышки smile 
т.е. определить действия твоей программы когда наступает какое-нить событие.
если речь идет о Paint, то тут нужно прописать все, что связано с отрисовкой объекта
Код

//подписка
this.outputPanel.Paint += new System.Windows.Forms.PaintEventHandler(this.outputPanel_Paint);
//действие
private void outputPanel_Paint(object sender, PaintEventArgs e)
        {
            e.Graphics.Clear(Color.Black);
        }



--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
andreyn
Дата 7.4.2008, 18:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.4.2008

Репутация: нет
Всего: нет



Народ,  вы конечно извините что туплю, но вот что получилось, точнее не получилось..
Код

Graphics g = Graphics.FromImage(ImageButton1.Image);
        g.FillRectangle(Brushes.Black, e.X, e.Y, 2, 2);
        ImageButton1.Invalidate();

Ошибка 

Compiler Error Message: CS0117: 'System.Web.UI.WebControls.ImageButton' does not contain a definition for 'Image'

Подскажите, что не так? 
PM MAIL   Вверх
vponomarov
Дата 7.4.2008, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 407
Регистрация: 11.8.2007
Где: Киев

Репутация: 4
Всего: 12



andreyn, а как ты устанавливаешь картинку на кнопку?


--------------------
user posted image
user posted image
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.1353 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.