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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PNG pictureBox C#, как вставить png картинку в pictureBox 
V
    Опции темы
tolan96
Дата 13.1.2010, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



С наступившим, товарищи.  smile 

Интересует вопрос :"Как png картинку, хранимую в ресурсах, нарисовать в pictureBox ?".
И еще один: "Будет ли при этом сохранена прозрачность?".

Вот как я себе это представляю:
Код

Image myImage = (Bitmap)MyProgect.Properties.Resources.ResourceManager.GetObject("picture.png");

void pictureBox_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            
            g.DrawImage(myImage, 5, 3);
        }   


Но при попытке нарисовать картинку компилятор ругается, что объект myImage неопределен...  smile 
Вот мне и интересно, как же это сделать.
PM MAIL   Вверх
Fortnox
Дата 13.1.2010, 21:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Легче сделать так:

Код

pictureBox.Image = Properties.Resources.ИМЯ_РЕСУРСА;


В твоем случае:
Код

pictureBox.Image = Properties.Resources.picture;


Насчет прозрачности: да, она будет.

А еще, забыл, если все же делаешь через ResourceManager.GetObject, то не указывай расширение (просто GetObject("picture")), иначе myImage будет null.


Это сообщение отредактировал(а) Fortnox - 13.1.2010, 21:04
PM MAIL   Вверх
tolan96
Дата 13.1.2010, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



На сколько я знаю, используя параметр pictureBox.Image, я могу расположить в pictureBox только одну картинку, а мне нужно на одной заданной позиции расположить одно изображение,  а на другой - другое. Вообщем нарисовать две картинки в двух нужных местах.
PM MAIL   Вверх
Fortnox
Дата 13.1.2010, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ааа... 

Вроде myImage должно быть видно.
А где объявление myImage находится именно?

У меня, например, такой код, он работает:
Код

        Image myImage = Properties.Resources.ResourceManager.GetObject("Untitled") as Image;

        private void btnDrawImg_Click(object sender, EventArgs e)
        {
            Graphics gr = Graphics.FromImage(pictureBox.Image);
            gr.DrawImage(myImage, 0, 0);
        }


Это сообщение отредактировал(а) Fortnox - 13.1.2010, 21:38
PM MAIL   Вверх
tolan96
Дата 13.1.2010, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Так товарищи, оказалось что у меня кривые руки и я добавил ресурсы только в папку ресурсов Solution Explorer'а, а не в сам проект.

Вот, опять, код:
Код

myImage = Properties.Resources.picture;

private void pictureBox_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            
            g.DrawImage(myImage, 57, 57);
        }   


Но есть еще один ньюанс. Изображение получается немного увеличенное...Никто не знает почему?

Это сообщение отредактировал(а) tolan96 - 13.1.2010, 21:41
PM MAIL   Вверх
Fortnox
Дата 13.1.2010, 21:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Попробуй использовать вместо DrawImage - DrawImageUnscaled
PM MAIL   Вверх
tolan96
Дата 13.1.2010, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нет, DrawImageUnscaled тоже не работает. Странно, если я устанавливаю картинку в качестве pictureBox.Image, она отображается нормально, а вот когда картинка рисуется, то, почему-то, увеличивается... Чтож, придется довольствоваться тем, что есть.  smile 
PM MAIL   Вверх
tolan96
Дата 13.1.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Нашел решение:

При рисовании изображения указываю его оригинальные размеры...
Код

g.DrawImage(myImage, 50, 50, 36, 36);    // 36 в длинну и ширину

Вот так вот все и работает. Спасибо Fortnox за оказанное содействие!
PM MAIL   Вверх
CasperSC
Дата 15.1.2010, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Так можно из ресурсов изображение присвоить переменной Img, а как выводить не знаю, ещё не пробовал. И этот способ точно работает.
Код

Image Img = new System.Drawing.Bitmap(Properties.Resources.НазваниеКартинки);



Это сообщение отредактировал(а) CasperSC - 15.1.2010, 18:01
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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