![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]()
Здравствуйте, спрошу уже тут, авось кто-знает. Гугл чего то пасует ...
В общем задача такая: Есть функция в которую приходит объект Graphics. Код:
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 15.02.2012
Сообщений: 821
|
![]()
Это разве не то https://msdn.microsoft.com/en-us/lib...v=vs.110).aspx ?
^-.-^ My GitHub
|
![]() |
![]() |
![]() |
#3 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
Этот метод лишь задает DPI, ничего больше. Он не копирует картинку.
Объект Graphics не содержит информацию об отрисованной графике. Вам нужен Image, чтобы что-то сделать с готовым изображением, логичнее передавать его. Если всё же необходимо сделать именно так, как вы написали, то копайте в сторону Graphics.GetHdc() - вы получите handle реального контейнера графики, с которым дальше можно работать через WinAPI. Вероятно, вам понадобится эта функция: Код:
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
Ну ведь когда вызываются методы отрисовки то он же куда то рисует. То есть какой то буфер должен быть. Искал через рефлексию но все поинтеры которые нашел вызывают ошибку при попытке создать из них картинку.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
![]() |
![]() |
![]() |
#5 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]() Код:
Код:
А не наоборот, как хотите вы. HDC по идее даёт вам всю необходимую информацию, чтобы достать картинку (только это HDC не Graphics, а Image'а, для которого она была создана), но разумеется не стандартными средствами .NET, а функциями WinAPI.
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
Код:
А можно поподробнее узнать что за объект расположен по ссылке HDC?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 21.01.2009
Сообщений: 719
|
![]()
HBITMAP - это не HDC, поэтому и не работает =) В C# все эти вещи имеют просто тип IntPtr, даже если они отвечают за совершенно разные вещи...
HDC = Handle of a Device Context. Он предоставляет доступ к графической информации на т.н. "устройстве", в нашем случае ваша картинка, на которой рисует Graphics. Алгоритм действия (примерно): 1) получить у графики HDC 2) создать пустой Bitmap с тем же размером 3) получить у новой картинки её HDC 4) вызвать BitBlt для копирования исходной картинки (hdcSrc) в новую (hdc). Возможно необходимы какие-то промежуточные действия вроде блокировок, но это я точно не скажу, последний раз писал такое очень давно) А вообще почитайте про WinAPI, там много интересного. Того, что "под капотом" windows forms.
Изобретатель велосипедов
|
![]() |
![]() |
![]() |
#9 | |
Старожил
Регистрация: 25.08.2011
Сообщений: 2,841
|
![]() Цитата:
Но в любом случае получается что овчинка выделки не стоит в данном случае.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два. |
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
graphics.h в VS 2010... | Andrey141 | Visual C++ | 2 | 28.11.2012 07:15 |
graphics.h | victor5133 | Помощь студентам | 0 | 26.10.2011 19:25 |
<graphics.h> | Ислам | Помощь студентам | 4 | 28.06.2011 09:31 |
из-за чего появляется полоса (на скрине) при вставке BitMap в TImage? - Проблема с Bitmap | Grey@2009 | Мультимедиа в Delphi | 2 | 02.01.2010 20:23 |
graphics.h C++ | ROD | Помощь студентам | 3 | 21.12.2008 20:09 |