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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> контекст принтера 
:(
    Опции темы
Корнелиус
Дата 27.7.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Доброго дня всем!

У меня на форме расположена компонента геоинформационной системы, предоставляющая возможности работы  с картами MapInfo. У компоненты есть свой метод печати, корректный для векторной графики. Сигнатура следующая:

OBJECT.PrintMap(hDC, x, y, w, h)

OBJECT: represents a Map object
hDC:        Printer device context. Can be any device context.
x:               Upper left corner X in HIMETRIC units.
y:               Upper left corner Y in HIMETRIC units.
w:              Width in HIMETRIC units.
h:               Height in HIMETRIC units.

Так вот у меня вопрос, как получить контекст принтера в .Net для передачи в этот метод?

PM MAIL   Вверх
Bishop
Дата 27.7.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 3.6.2005
Где: Минск, Беларусь

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



Предположу, что вот так:
Код
private void button1_Click(object sender, EventArgs e)
{
    PrintDialog pdlg = new PrintDialog();
    pdlg.UseEXDialog = true; 
    if (pdlg.ShowDialog() != DialogResult.OK)
        return;
    System.Drawing.Printing.PrintDocument pd = new System.Drawing.Printing.PrintDocument();
    pd.PrinterSettings = pdlg.PrinterSettings;
    pd.PrintPage += new System.Drawing.Printing.PrintPageEventHandler(pd_PrintPage);
    pd.Print();
}

void pd_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
    IntPtr hdc = e.Graphics.GetHdc();
    OBJECT.PrintMap(hdc, x, y, w, h);
    // ...
    e.Graphics.ReleaseHdc(hdc);
}

Если непонятен C#, посмотрите пример здесь. Фактически, hDC вы получите в момент печати страницы.
PM WWW ICQ   Вверх
Корнелиус
Дата 27.7.2008, 18:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Спасибо огромное
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума VB .NET
diadiavova
  • Прежде чем задать вопрос, воспользуйтесь поиском: возможно Ваш вопрос уже обсуждался и на него был получен ответ.
  • Если такой же вопрос не найден, не стоит задавать свой вопрос в любую тему, создайте новую.
  • Заголовок темы должен отображать ее суть.
  • Содержание поста должно описывать проблему понятно, но в то же время, по возможности, лаконично. Сначала следует описать суть вопроса, потом можно привести пример кода, не вынуждайте других участников угадывать в чем Ваша проблема - телепатов здесь нет.
  • Будьте взаимно вежливы и дружелюбны.
  • При оформлении сообщений используйте форматирование, примеры кода заключайте в теги [CODE=vbnet][/CODE].
  • Также ознакомьтесь с общими правилами, действующими на всем форуме.
  • Если вопрос решен, не забывайте помечать тему решенной(вверху темы есть ссылка). Кроме того, если Вы хотите отблагодарить участников, оказавших помощь в решении, можно повысить им репутацию, в случае, если у Вас менее 100 сообщений в форуме и функция изменения репутации Вам недоступна, можете написать сюда.
  • Общие вопросы по программированию на платформе .NET обсуждаются здесь.
  • Литература по VB .NET обсуждается здесь.

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

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


 




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


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

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