Печать! Я не нашел ничего похожего((

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Печать! Я не нашел ничего похожего((

Сообщение Matew » 11.11.2004 (Чт) 10:54

Все довольно просто, но я не могу понять! :oops:
мне надо распечатать примерно ледующее
Rectangle(Form1.hdc, 2500, 3000, 10000, 5000) , но границы этого прямойгольника выходят за пределы формы :( и мне бы сделать так, чтобы принтер печатал не мониторовские пиксели, а тоненькие принтеровские(у него же разрешение на много выше)! Помогите, ну очень надо!

Shurrik
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 110
Зарегистрирован: 20.05.2004 (Чт) 5:35
Откуда: Керчь, Крым

Сообщение Shurrik » 11.11.2004 (Чт) 10:59

Так и печатай линии на самом принтере Printer.Line (x1,y1)-(x2,y2),B. Только узнай в точках размеры листа.
Колесо: Хочешь жить? Умей вертеться.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 12.11.2004 (Пт) 4:26

А как узнать?
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 12.11.2004 (Пт) 8:05

Все, я сам узнал-GetDeviceCaps:-)
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 12.11.2004 (Пт) 10:12

Можно и проще.
1. Printer.ScaleMode = vbPixels
2. ? Printer.(Scale)Width
Lasciate ogni speranza, voi ch'entrate.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 15.11.2004 (Пн) 7:20

Че то я ниче не пойму :( делаю вот так:
Код: Выделить всё
Private Sub PolnayaProrisovkaPechat() '
Printer.Print " "
call RazmeryPechat
Call ZaborPechat
Dim k As Integer
For k = 1 To schethik
    Call RisovaniePechat(vbBlack, k)
Next k
Printer.NewPage
Printer.EndDoc
End Sub

Private Sub ZaborPechat()
Dim hOldPen As Long, hOldBrush As Long

  hOldBrush = SelectObject(Printer.hdc, CreateSolidBrush(0))
  hOldPen = SelectObject(Printer.hdc, CreatePen(0, 1, 0))
Rectangle Printer.hdc, x1,y1,x2,y2
DeleteObject SelectObject(Printer.hdc, hOldPen)
If hOldBrush Then DeleteObject SelectObject(Printer.hdc, hOldBrush)
end sub

Public Sub RazmeryPechat()
Printer.Line(x1,y1)-(x2,y2),0
end sub

Private Sub RisovaniePechat(cvet As Long, Nschethik As Integer)
Dim hOldPen As Long, hOldBrush As Long
  prhdc=printer.hdc
  hOldBrush = SelectObject(prhdc, CreateSolidBrush(cvetZal))
  hOldPen = SelectObject(prhdc, CreatePen(0, 2, 0))
  polygon prhdc, pt1(1), UBound(pt1)
  DeleteObject SelectObject(prhdc, hOldPen)
  If hOldBrush Then DeleteObject SelectObject(prhdc, hOldBrush)
end sub

И получается , что первые две процедуры печатаются на одном лсте, а третья на втором! Почему так?????

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 15.11.2004 (Пн) 7:33

Извините, перепил вчера, видать :-)
Это вот из-за этого:
prhdc = CreateDCBynum("WINSPOOL", DeviceName$, vbNullString, agGetAddressForObject&(dmOutBuf(0)))
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList  
cron