Форум программистов, компьютерный форум, киберфорум
Delphi: Графика, звук, видео
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 09.12.2009
Сообщений: 19
1

Создание линии!

18.10.2010, 15:34. Показов 1005. Ответов 2
Метки нет (Все метки)

Доброго дня всем!
Подскажите как такое сделать:
Нажимаю на кнопку мыши и не отпускаю и рисуется линия в произвольном виде т.е куда мышь туда и линия, отпускаю линия фиксируется т.е получается отрезок! Я думаю этот как то с помощью Canvas?!-)
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.10.2010, 15:34
Ответы с готовыми решениями:

Привязка объектов. Создание линии
Всем здрасте) Имеется 2 шара(shape) которые перемешаются по зажатию левой кнопки мышки, можно ли...

создание линии тренда
Всем доброго времени суток! подскажите пожалуйста, в общем проект импортирует таблицу из Exsel и по...

Создание 2 линии
Имеется 2 линии на которых бригады используют единственный кран штабелер . Но и другая бригада...

Создание линии на фотографии
Добрый вечер, форумчане! Появилась необходимость нарисовать линию в чёрно-белой фотографии с ...

2
46 / 35 / 20
Регистрация: 12.04.2010
Сообщений: 136
18.10.2010, 16:52 2
Лучший ответ Сообщение было отмечено ilya891 как решение

Решение

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{**********************************************************************}
{* Иллюстрация к книге "OpenGL в проектах Delphi"                     *}
{* Краснов М.В. [email]softgl@chat.ru[/email]                                        *}
{**********************************************************************}
 
program Paint;
 
uses
   Windows, Messages;
 
const
  AppName = 'WinPaint';
 
Var
  Window : HWnd;
  Message : TMsg;
  WindowClass : TWndClass;
  xPos, yPos : Integer;
  Down : Boolean;
 
function WindowProc (Window : HWnd; Message, WParam : Word;
         LParam : LongInt) : LongInt; stdcall;
Var
    dc : HDC;               { ссылка на контекст, должна использоваться для работы с окном }
    MyPaint : TPaintStruct; { структура для работы функций отображения }
Begin
  WindowProc := 0;
  case Message of
       wm_Destroy : begin
                    DeleteDC (dc);
                    PostQuitMessage (0);
                    Exit;
                    end;
       wm_Create :  Down := False;
       WM_LBUTTONDOWN, WM_LBUTTONUP : Down := not Down;
       wm_MouseMove : begin
                      If Down then begin
                      xpos := LoWord ( LParam );
                      ypos := HiWord ( LParam );
                      InvalidateRect(Window, nil, False);
                      end;
                      end;
       wm_Paint:    begin
                    If Down then begin
                    dc := BeginPaint (Window, MyPaint);
                    Ellipse (dc, xPos, yPos, xPos + 2, yPos + 2);
                    EndPaint (Window, MyPaint);
                    ReleaseDC (Window, dc);
                    end;
                    end;
  end; // case
  WindowProc := DefWindowProc (Window, Message, WParam, LParam);
End;
 
Begin
       With WindowClass do
        begin
        Style := cs_DblClks;
        lpfnWndProc := @WindowProc;
        cbClsExtra := 0;
        cbWndExtra := 0;
        hInstance := 0;
        hIcon := LoadIcon (0, idi_Application);
        hCursor := LoadCursor (0, idc_Arrow);
        hbrBackground := GetStockObject (White_Brush);
        lpszMenuName := '';
        lpszClassName := AppName;
        end;
       If RegisterClass (WindowClass) = 0 then
          Halt (255);
       Window := CreateWindow (AppName, 'Обработка мыши',
        ws_OverlappedWindow, 100, 100, 250, 150, 0, 0, HInstance, nil);
       ShowWindow (Window, CmdShow);
       UpdateWindow (Window);
       while GetMessage (Message, 0, 0, 0) do
        begin
         TranslateMessage (Message);
         DispatchMessage (Message);   
        end;
      Halt (Message.wParam);
End.
готовый пример из книги. Советую почитать Краснов "OpenGL в проектах Delphi"

Добавлено через 1 минуту
если угодно можно через Canvas сделать, как им пользоваться в книге расказано
0
15 / 15 / 3
Регистрация: 19.10.2010
Сообщений: 82
19.10.2010, 17:38 3
А я очень не советую читать Краснова. В большинстве случаев он делает то, чего сам непонимает. К данному примеру не относится, а в целом.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.10.2010, 17:38
Помогаю со студенческими работами здесь

Создание произвольной линии
Здравствуйте. У меня возникла проблема: Требуется на квадратном поле (скорее всего буду...

Создание буфера линии
Здравствуйте! Существует такая задача: необходимо создать буфер для прямой линии, для которой...

Создание линии по двум координатам
Объясните, пожалуйста, как сделать скриптом линию в 2д по имеющимся двум точкам? Или даже не линию,...

LISP. Создание и нумерация точек линии
Здравствуйте! Нужен SZZ.lsp, расставляющий и в отдельном слое нумерующий точки вдоль линии по...

Создание на чертеже фаски и штрихпунктирной линии
Проблема в том,что я задаю на чертеже фаску равную 5 и не получается может кто-нибудь поможет...

Создание цветной линии под текстом
Здравствуйте. Подскажите, как создать такое же горизонтальное меня, как здесь?...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru