![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | 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'е.  |