Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Graphics из bitmap Добавлено: 19.05.06 01:08  

Автор вопроса:  SPArk | Web-сайт: нету | ICQ: 190153075 
Вот тут такая проблема. Есть 2 рисунка- bmp1 и bmp2. Есть gr1 - графика первого рисунка, которой при загрузке формы присваивается значения графики рисунка bmp1. Цель- создать временную копию рисунка bmp1 (то есть поместить содержимое в bmp2), поработать с bmp1, а потом вернуть обратно его прежнее содержимое из bmp2. Например это можно использовать для отмены последнего действия.

'например вот
dim bmp1, bmp2 as bitmap
dim gr1 as graphics
bmp1=new bitmap(100,100)
bmp2=new bitmap(100,100)
bmp2=bmp1 'и вот начиная отсюда идут глюки
gr.drawline((Pens.Black, 10, 10, 50, 50) 'рисуем линию в графике первого рисунка

, но почему-то рисует он в обоих. Как будто бы при копировании содержимого первого рисунка во второй, второму тоже присваивается gr, то есть графика первого. И рисует он в обоих... Вот и собссно суть проблемы. Как правильно работать с графикой? Помогите разобраться...

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 SPArk



ICQ: 190153075 

Вопросов: 5
Ответов: 10
 Web-сайт: нету
 Профиль | | #1
Добавлено: 19.05.06 01:08
в последней строчке должно быть gr1 вместо gr. Не обращайте внимания...

Ответить

Номер ответа: 2
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #2 Добавлено: 19.05.06 03:58
bmp2=bmp1 'и вот начиная отсюда идут глюки

Фишка в том, что после этого действия, у тебя обе переменные указывают на один и тот же объект!!! Соответственно, рисуя на одном, тоже самое будет происходить и на другом. Ты не создал копию, ты создал 2 ссылки на ОДИН объект..

Ответить

Номер ответа: 3
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #3 Добавлено: 19.05.06 04:05
Правильно будет так:
bmp2 = New Bitmap(bmp1)

Ответить

Номер ответа: 4
Автор ответа:
 SPArk



ICQ: 190153075 

Вопросов: 5
Ответов: 10
 Web-сайт: нету
 Профиль | | #4
Добавлено: 22.05.06 01:22
СПАСИБО ОГРОМНОЕ. Так и думал, что создаётся идентичный обьект... Только не понял, как обойти проблему.

Ответить

Номер ответа: 5
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #5 Добавлено: 22.05.06 02:23
Так и думал, что создаётся идентичный обьект.

в том то и дело,что объект у тебя НЕ создается! а создается ссылка, указывающая на ТОТ ЖЕ САМЫЙ объект!

Ответить

Номер ответа: 6
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #6 Добавлено: 01.07.06 05:06
Можно еще использовать Bitmap.Clone

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам