4 / 4 / 3
Регистрация: 16.04.2010
Сообщений: 59
1

Загрузить рисунок, используя свойство Canvas объекта Form

29.09.2010, 20:27. Показов 8854. Ответов 16
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
добрый вечер,первый и последний раз признаю, что я блондинка,но я реально не могу на форму загрузить рисунок используя св-во Canvas объекта form, объясните пожалуста как это сделать.
зарание спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.09.2010, 20:27
Ответы с готовыми решениями:

Рисунок в delphi свойство Canvas
Добрые люди помогите пожалуйста сдаю экзамен а голова не варит мне надо нарисовать в делфи вот это ...

рисование в DELPHI, используя свойство Canvas
Привет Всем!!! Ребята, помогите доделать лабораторную работу, пожалуйста!!! Задание: 1. После...

Нарисовать флаги, используя свойство Canvas
Доброго времени суток! Ребята помогите нарисовать в Билдере используя свойство Canvas флаги:...

Нарисовать флаги, используя свойство Canvas
Пожайлуста помогите написать програму которая будет рисовать флаг США в C++ Builder с помощью...

16
КотЪ
219 / 219 / 60
Регистрация: 26.05.2009
Сообщений: 688
30.09.2010, 00:25 2
Через Канвас - не так-то просто. Лучше всего поместить на форму TImage, растянуть его на всю форму (Alignment = alClient) и загрузить картинку в этот Имейдж - так проще однозначно
0
4 / 4 / 3
Регистрация: 16.04.2010
Сообщений: 59
30.09.2010, 16:52  [ТС] 3
увы,есть одна проблема.по заданию надо использовать именно канвас
0
Почетный модератор
64304 / 47599 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
30.09.2010, 18:13 4
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm1.Button1Click(Sender: TObject);
var
  BitMap:TBitMap;
begin
 //  Выбор  пользователем графического  файла
 if OpenPictureDialog1.Execute then
  begin
   // Создание объекта BitMap типа TBitMap
   BitMap:=TBitMap.Create;
   // Загрузка в BitMap выбранного графического файла
   BitMap.LoadFromFile(OpenPictureDialog1.FileName);
   // Перенос изображения на канву формы
   Canvas.Draw(10, 10, BitMap);
   // Уничтожение объекта BitMap
   BitMap.Free;
  end;
end;
Информация
http://www.beluch.ru/progr/100comp/4_2.htm
1
4 / 4 / 3
Регистрация: 16.04.2010
Сообщений: 59
02.10.2010, 11:21  [ТС] 5
большое спасибо
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
09.12.2019, 10:34 6
Ап темы))

Почему если этот код поместить в OnShow формы, то ничего не произойдёт?
0
Модератор
3722 / 2227 / 776
Регистрация: 15.11.2015
Сообщений: 8,877
09.12.2019, 10:45 7
Matan!, вот это поворот!
https://youtu.be/LLk9_EH6Pfo
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
10.12.2019, 11:28 8
Цитата Сообщение от AzAtom Посмотреть сообщение
вот это поворот!
Ну, мож, подзабыл чего..
Мои рассуждения, в OnCreate создается форма. В OnShow она отрисовывается.
Если я на канве формы рисую в OnShow, изменения не отображаются.
Почему?
Что на самом деле происходит в OnShow?
0
Модератор
3722 / 2227 / 776
Регистрация: 15.11.2015
Сообщений: 8,877
10.12.2019, 14:55 9
Цитата Сообщение от Matan! Посмотреть сообщение
Что на самом деле происходит в OnShow?
Это событие возникает перед каждым показом формы. Даже если сделали Form1.Visible := true; невидимой форме.

Добавлено через 34 секунды
Цитата Сообщение от Matan! Посмотреть сообщение
В OnShow она отрисовывается.
Отрисовывается в OnPaint.
0
D1973
10.12.2019, 16:57
  #10

Не по теме:

Цитата Сообщение от AzAtom Посмотреть сообщение
Отрисовывается в OnPaint.
Да... и при чем дважды при старте приложения... Сначала после события onShow, потом после события onActivate...

0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
10.12.2019, 18:02 11
Цитата Сообщение от AzAtom Посмотреть сообщение
Это событие возникает перед каждым показом формы.
Это я, как ни странно, помню
А в OnShow что конкретно делается?
0
886 / 588 / 179
Регистрация: 28.02.2017
Сообщений: 2,359
Записей в блоге: 1
10.12.2019, 18:18 12
Как бы...
Цитата Сообщение от Embarcadero
OnPaint - Occurs when the form is redrawn.
OnShow - Occurs when the form is shown (that is, when its Visible property is set to true).
Добавлено через 6 минут
Приватный метод DoShow() вызывает событие OnShow если оно было установлено.
Сам DoShow() вызывается при CM_SHOWINGCHANGED если был поднят флаг Showing, а уже после делается позиционирование типа poScreenCenter и прочие.
0
Житель Земли
3003 / 3005 / 391
Регистрация: 26.07.2011
Сообщений: 11,464
Записей в блоге: 1
12.12.2019, 11:21 13
Цитата Сообщение от Matan! Посмотреть сообщение
Почему если этот код поместить в OnShow формы, то ничего не произойдёт?
чистый эксперимент
Кликните здесь для просмотра всего текста
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
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    ListBox1: TListBox;
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  end;
 
var
  Form1: TForm1;
  log: TStrings;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListBox1.Items.Text:= log.Text;
end;
 
procedure TForm1.FormActivate(Sender: TObject);
begin
  log.Add('Activate');
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  log.Add('Create');
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  log.Add('Paint');
end;
 
procedure TForm1.FormResize(Sender: TObject);
begin
  log.Add('Resize');
end;
 
procedure TForm1.FormShow(Sender: TObject);
begin
  log.Add('Show');
end;
 
initialization
  log:= TStringList.Create;
finalization
  log.Free;
end.

смотри, сколько перерисовок после OnShow!
Миниатюры
Загрузить рисунок, используя свойство Canvas объекта Form  
2
Житель Земли
3003 / 3005 / 391
Регистрация: 26.07.2011
Сообщений: 11,464
Записей в блоге: 1
12.12.2019, 11:35 14
Цитата Сообщение от D1973 Посмотреть сообщение
Да... и при чем дважды при старте приложения... Сначала после события onShow, потом после события onActivate...
и даже больше. см. выше )
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
12.12.2019, 13:20 15
Цитата Сообщение от DenNik Посмотреть сообщение
смотри, сколько перерисовок после OnShow!
Вполне наглядно
0
Модератор
3722 / 2227 / 776
Регистрация: 15.11.2015
Сообщений: 8,877
12.12.2019, 13:46 16
Как вариант можно так, чтобы картинка выводилась на форму:
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
type
  TForm1 = class(TForm)
    OpenPictureDialog1: TOpenPictureDialog;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormPaint(Sender: TObject);
  private
    { Private declarations }
    Bitmap: TBitmap;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
  Bitmap := TBitmap.Create; // Создание объекта Bitmap типа TBitmap
  if OpenPictureDialog1.Execute then //  Выбор  пользователем графического  файла
    Bitmap.LoadFromFile(OpenPictureDialog1.FileName);  // Загрузка в Bitmap выбранного графического файла
end;
 
procedure TForm1.FormDestroy(Sender: TObject);
begin
  Bitmap.Free; // Уничтожение объекта Bitmap
end;
 
procedure TForm1.FormPaint(Sender: TObject);
begin
  Canvas.Draw(0, 0, Bitmap); // Перенос изображения на канву формы
end;
0
1437 / 1014 / 228
Регистрация: 31.05.2013
Сообщений: 6,645
Записей в блоге: 6
13.12.2019, 13:54 17
Цитата Сообщение от AzAtom Посмотреть сообщение
Как вариант можно так, чтобы картинка выводилась на форму:
Я умею выводить картинку на канву. Вопрос был в другом. И я получил на него ответ в #13.
1
13.12.2019, 13:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2019, 13:54
Помогаю со студенческими работами здесь

Передать свойство объекта в свойство объекта в объекте что в массиве
var array = ; function func(a, b, c) { array = {}; array.a = {}; // вместо "a" - аргумент ...

построить функцию y=kx+b (линейная функция) с помощью Vcart или canvas (form.canvas)
Надо построить функцию y=kx+b (линейная функция) с помощью Vcart или canvas (form.canvas)

Подскажите, пожалуйста, как на Form загрузить картинку, т.е. щелкнуть по Form и на ней появилась картинка
Подскажите, пожалуйста, как на Form загрузить картинку, т.е. щелкнуть по Form и на ней появилась...

Диапазону ячеек B2:B20 присвоить имя "Стоимость", используя свойство Cells объекта Range
1) Диапазону ячеек B2:B20 присвоить имя "Стоимость", используя свойство Cells объекта Range. 2)...


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

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

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