График функции, мышь, печать |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
График функции, мышь, печать |
Кина |
Сообщение
#1
|
Гость |
Очень прошу помочь :o
Программа выводит сетку координат и метрическую сетку (разными цветами). Оси должны быть с графическими отметками и названиями. Рисует график y=x*x*x*Ln|x*x-4|. Если нажать мышкой на линию графика - отображаются координаты этой точки. Допускается использовать только вывод точки и получение координат. Возможность распечатки на матричном принтере. |
volvo |
Сообщение
#2
|
Гость |
Кина
Вот процедура... Она будет работать для всех граф. режимов на всех принтерах, воспринимающих систему команд Epson... Код Uses Graph, Printer, Crt; Procedure CopyToPRN( X1, Y1, X2, Y2 : Integer; Bk1, Bk2 : Word; Inverse : Boolean; Mode : Byte ); Var ScanLine : Integer; N1, N2 : Byte; Function ConstructByte( X, Y : Integer ) : Byte; Const Bits : Array[ 0 .. 7 ] Of Byte = ( 128, 64, 32, 16, 8, 4, 2, 1 ); Var P : Word; CByte : Byte; Bit : Byte; YY : Integer; Begin CByte := 0; For Bit := 0 To 7 Do Begin YY := Y + Bit; P := GetPixel( X, YY ); If ( YY <= Y2 ) AND ( P <> Bk1 ) AND ( P <> Bk2 ) Then Inc( CByte, Bits[ Bit ] ); End; ConstructByte := CByte; End; Procedure DoLine; Var XPixel : Integer; PrintByte : Byte; Begin If Mode = 1 Then Write( Lst, #27'L' ) Else Write( Lst, #27'*', Chr( Mode ) ); Write( Lst, Chr( N1 ), Chr( N2 ) ); For XPixel := X1 To X2 Do Begin PrintByte := ConstructByte( XPixel, ScanLine ); If( Inverse ) Then PrintByte := NOT PrintByte; Write( Lst, Chr( PrintByte ) ); End; Write( Lst, #10 ); End; Label Quit; Begin Mode := Mode MOD 7; If Mode In [ 0, 5 ] Then Mode := 4; Write( Lst, #27'3'#24 ); N1 := Lo( Succ( X2 - X1 ) ); N2 := Hi( Succ( X2 - X1 ) ); ScanLine := Y1; While ScanLine < Y2 Do Begin If KeyPressed AND ( ReadKey = #27 ) Then Goto Quit; DoLine; Inc( ScanLine, 8 ); End; Quit: Write( Lst, #27#2 ); End; Begin { Инициализация графики } { Построение изображения } CopyToPrn(0, 0, GetMaxX, GetMaxY, Black, Black, False, 1); { Закрываем графику } End. Сообщение отредактировано: volvo - |
Текстовая версия | 9.06.2024 19:23 |