0 / 0 / 0
Регистрация: 10.08.2015
Сообщений: 6
1

Рисуем на Рабочем столе

08.10.2010, 20:02. Показов 5984. Ответов 3
Метки нет (Все метки)

Помогите решить задачу на "Delphi". Есть программа, (код приведён ниже) суть которой заключается в следующем : При нажатии и удерживании Левой кнопки мыши на форме рисуется произвольная линия красным цветом, размером в три пикселя. При нажатии Правой кнопки мыши поверхность формы очищается от рисунка. Форма содержит один компонент - Таймер (интервал=1). Цвет фона значения не имеет. Вопрос : "Как на основе этой программы нарисовать изображение, только не на форме, а на Рабочем столе либо поверх других окон?". Была предпринята попытка, путём обмана (убрав её заголовок) присвоить прозрачный цвет форме и увеличить клиентскую часть формы до размеров экрана, но в этом случае "карандаш" тоже становится прозрачным. Эксперименты с компонентом "Image" не увенчались успехом. Также была написана Процедура для "снимка" экрана с интервалом, а изображение планировалось рисовать поверх "снятого" изображения, но в этом случае наблюдается задержка по времени рисования самой линии. Я перерыл кучу сайтов с примитивными советами про некий Дескриптор окна (в данном случае Рабочего стола), но как этим пользоваться неизвестно. Конкретного ответа я не нашёл. Каждый советует что-то своё и без наличия комментариев. Один даже сказал , что мол такого в Делфи не сделать и что для этого нужен язык С со всеми его плюсами... Программисты хвастают своими программами от Калькулятора до Баз Данных, неужели написать такую программу им лень?
С уважением Игорь, г.Киев
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
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;
 
type
  TForm1 = class(TForm)
    Timer1: TTimer;
    procedure FormCreate(Sender: TObject);
    procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Timer1Timer(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  Up: boolean;
  x1,y1,x2,y2: integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Up:=true;
end;
 
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Up:=true;
end;
 
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Up:=false;
x2:=x;
y2:=y;
If (Button<>mbLeft) then
Form1.Refresh;
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if not up then
      begin
        form1.Canvas.MoveTo(x2,y2);
        form1.Canvas.LineTo(x1,y1);
        x2:=x1;
        y2:=y1;
      end;
Form1.Canvas.Pen.Width:=3;
Canvas.Pen.Color:=clRed;
end;
 
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
x1:=x;
y1:=y;
end;
 
end.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.10.2010, 20:02
Ответы с готовыми решениями:

Рисовалка на рабочем столе
Вот написал программку, что бы рисовать в форме, а теперь мне нужно сделать так, что бы то что я...

Txt-файлы на рабочем столе
Задача: 1. Взять txt файлы с рабочего стола (любые, какие есть) 2. Спарсить содержимое 3....

Размещения окна на рабочем столе
Как сделать так, чтобы при открытии программы она открывалась в определённых координатах на рабочем...

Закрепить программу на рабочем столе
Здравствуйте. Не знаю как корректно задать вопрос, но все же. Как закрепить (если можно) программу...

3
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 48
09.10.2010, 03:06 2
Не стоит так изголяться, есть более красивое решение...
WinApi
VCL
0
КотЪ
219 / 219 / 60
Регистрация: 26.05.2009
Сообщений: 688
09.10.2010, 03:57 3
Цитата Сообщение от Компилятор Посмотреть сообщение
Я перерыл кучу сайтов с примитивными советами про некий Дескриптор окна
Жесть, товарищ)) А погуглить о дескрипторах слабо?
бамц
тыщ
и тыдыщ
ЗЫ. Всё нашлось буквально за 10 секунд...

Добавлено через 1 минуту
ЗЫ. По тексту вопроса: на основе той программы, которую вы привели, создать прогу для рисования на экране нельзя, т.к. в первом случае используется канвас формы, а во втором GDI Windows.
0
10 / 10 / 4
Регистрация: 03.10.2010
Сообщений: 48
10.10.2010, 01:07 4
Zabiyak вам дело говорит, посмотрите те примеры, что мы вам скинули, там сделано так, как нужно
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.10.2010, 01:07

Размещение формы на рабочем столе
Подскажите пожалуйста каким образом задать размещение не перемещаемой формы (пользователь не будет...

Расшарить диски на удаленном рабочем столе
Всем привет. Использую MSTSCLib_TLB для подключения. Код MsRdpClient21.Server :=Edit1.Text;...

Как создать файл на рабочем столе?
каким образом? Добавлено через 3 минуты как просто создать файл я знаю, а вот как именно на...

Панель для ярлыков на рабочем столе
Всем привет хочу сделать такую панельку для ярлыков . Чтоб по нажатию на кнопку &quot;Игры&quot; выезжала...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.