![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
Доброе время суток!
Итак, у меня на форме расположены:
У меня написано следующее: Код:
// Открытие файла
procedure TForm1.N2Click(Sender: TObject);
var bmp:TBitmap;
begin
OpenDialog1.Title := 'Відкрити файл...';
if (OpenDialog1.Execute) then
begin
bmp:=TBitmap.create;
bmp.loadfromfile('D:\1.bmp');
paintbox1.width:=bmp.width;
paintbox1.height:=bmp.height;
paintbox1.canvas.draw(0,0,bmp);
bmp.Free;
end;
end;
// Сохранение в файла
procedure TForm1.N3Click(Sender: TObject);
var bmp: TBitmap;
begin
SaveDialog1.Title:=' Зберегти файл як...'; // заголовок вікна діалогу збереження файлу
if SaveDialog1.Execute then
begin
bmp := TBitmap.Create;
try
bmp.Width := PaintBox1.Width;
bmp.Height := PaintBox1.Height;
bmp.Canvas.CopyRect(Rect(0, 0, bmp.Width, bmp.Height), Canvas, rect (0,0,PaintBox1.Width, PaintBox1.Height));
bmp.SaveToFile(SaveDialog1.Filename);
finally
bmp.Free;
end;
end;
end;Последний раз редактировалось vah-smile, 02.06.2009 в 07:21. |
|
#2
|
||||
|
||||
|
Похожий вопрос нашел на: http://www.delphisources.ru/forum/sh...light=PaintBox. Но там тема не решена (или же я просто не понял). У моем случаэ при наведении любого окна на рисунок (PaintBox) - даные "стираются"
Что делать?Последний раз редактировалось vah-smile, 02.06.2009 в 09:11. |
|
#3
|
|||
|
|||
|
1). Для PaintBox рисование обычно пишется в OnPaint.
2). Непонятно, для чего диалог открытия, т.к. берётся готовое имя. Я немного подправил: Код:
var bmp:TBitmap;
procedure TForm1.btnLoadClick(Sender: TObject);
begin
OpenDialog1.Title := 'Відкрити файл...';
if (OpenDialog1.Execute) then
begin
bmp:=TBitmap.create;
bmp.loadfromfile(OpenDialog1.FileName);
paintbox1.width:=bmp.width;
paintbox1.height:=bmp.height;
end;
end;
procedure TForm1.btnSaveClick(Sender: TObject);
begin
SaveDialog1.Title:=' Зберегти файл як...';
if SaveDialog1.Execute then
try
bmp.SaveToFile(SaveDialog1.Filename);
finally
end;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
begin
paintbox1.canvas.draw(0,0,bmp);
end; |
|
#4
|
|||
|
|||
|
Все это фигня.
Человек просто не понимает что такое PaintBox и для чего он используется. Вообще, этот компонент в основном предназначен для отображения и фактически не умеет сохранять то, что в нем нарисовано. Поэтому обычно делают буферный итмап, на котором реально все и отрисовывается, а в PaintBox только вывод этого битмапа на экран (это если мы говорим о графическом редакторе, для других целей все немного подругому). И сохранени/загрузка производятся имено в этот битмап, а уж он потом отображается на PaintBox'е. |