Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.06.06;
Скачать: CL | DM;

Вниз

Моргает TImage при рисовании в нём   Найти похожие ветки 

 
PixGraft   (2004-03-28 18:11) [0]

Моргает TImage при рисовании на нём! ЗАПАРИЛСЯ!!! Помогите ПЛЗ!!! Почему в microsoft paint не моргает, а у меня прямо аж "матрица" настоящая ....

Х Е Л П !!!!

любые исходники, любые предложения, лишь бы не моргало!!!

(vixaz@rambler.ru)


 
Pa5ha   (2004-03-28 19:09) [1]

form1.Image1.Stretch:=true;
form1.image1.autosize:=true;


 
Думкин ©   (2004-03-28 19:23) [2]

> [1] Pa5ha   (28.03.04 19:09)

Рисовать при таких установках пробовал?

> PixGraft   (28.03.04 18:11)

Это самый часто задаваемый тут вопрос - прогуляйся по веткам и найдешь, что у формы, либо панели на которой Имадж надо выставить простое свойство в истину.
Удачи.


 
PixGraft   (2004-03-28 19:57) [3]

лучше бы подсказали куда конкретно, потому что я уже покаким веткам только не гулял!!!


 
PixGraft   (2004-03-28 20:27) [4]

Ещё попутно вопросик есть.. примерно такая же фигня и с TImage.. постоянно мерцает при перемещении


 
Mihey ©   (2004-03-28 21:22) [5]

В OnCreate формы напиши:

DoubleBuffered := True;


 
PixGraft   (2004-03-28 21:24) [6]

на техническом языке, как это работает???

DoubleBuffered := True;


 
Mihey ©   (2004-03-28 23:53) [7]

>на техническом языке, как это работает???

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


 
Pa5ha   (2004-03-29 00:04) [8]


> Рисовать при таких установках пробовал?

Только-что попробовал. А в чем собсна проблема? При DoubleBuffer у меня возникали проблеммы. Например какие-то белые пятна на месте компонентов (некоторых).


 
Skywalker   (2004-03-29 14:47) [9]

чтоб не мигало юзай апишные функции вывода в канву, работает
офигенно быстро и никаких мигов...
поищи в win32 хэлпе функцию StretchDIBits.


 
PixGraft   (2004-03-29 16:27) [10]

Вы ещё между собой переругайтесь!!!

Вобщем попробовал я всё что вы предлагали... НИЧЕРТА НЕ ПОМОГЛО!!! КАК ВСЁ ПРЫГАЛО, ТАК И ПРЫГАЕТ ДАЛЬШЕ!!!

Други!!! Вы лучше пришлите исходники проги в которой (по вашему мнению) ничего не прыгает!!! и выложите их ЗДЕСЬ (в кладовке)!!!! ЧТОБЫ БОЛЬШЕ ПОДОБНЫХ (на ваш взгляд) ВОПРОСОВ НЕ ПОВТОРЯЛОСЬ!!!! :) кудесники... хе..

Я тоже с дельфи вожусь, но раз есть люди умнее - помогите реально, а не спорами между собой и DoubleBuffered := True; ПИСАЛ!!!! НЕ ПОМОГЛО!!!!!!


 
PixGraft   (2004-03-29 16:30) [11]

кыстати!!! карандаш сделать получилось в paintbox но ведь там изображение не обновляется!!!!! А дерзните кто-нить линию сделать!!! с координатами (x,y) и (x1,y1)...


 
PixGraft   (2004-03-29 17:03) [12]

Кому не в ломы, жду ответов на своём форуме!
http://www.ditrix.best-host.ru/forum/viewforum.php?f=13

кыстати :) может найдёте чего полезного!


 
Думкин ©   (2004-03-29 19:59) [13]

> [8] Pa5ha   (29.03.04 00:04)

Да, где-то что-то я забыл - давно с графикой не работал, но что-то еще помню - помнится было, но вот в чем?. :(

> [12] PixGraft   (29.03.04 17:03)

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


 
Mihey ©   (2004-03-29 21:28) [14]

Ну вот пример, не мерцает (выводится 500х400 изображение) с линией. В папке с проектом должно быть изображение 500х400 любое, но не синего цвета :), с названием fon.bmp.

unit mainUnit;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
 TmainForm = class(TForm)
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure FormPaint(Sender: TObject);
 private
 public
   procedure IdleHandler(Sender: TObject; var Done: Boolean);
 end;

function ConcreteX(X: Integer): Integer;
function ConcreteY(Y: Integer): Integer;

var
 mainForm: TmainForm;
 fon: TBitmap;

 p1, p2: TPoint;

implementation

{$R *.DFM}

procedure TmainForm.IdleHandler(Sender: TObject; var Done: Boolean);
begin
 Invalidate;
end;

function ConcreteX(X: Integer): Integer;
begin
 Result := X;
 If X < 0 then Result := 0;
 If X > (fon.Width-1) then Result := fon.Width-1;
end;

function ConcreteY(Y: Integer): Integer;
begin
 Result := Y;
 If Y < 0 then Result := 0;
 If Y > (fon.Height-1) then Result := fon.Height-1;
end;

procedure TmainForm.FormCreate(Sender: TObject);
begin
 DoubleBuffered := True;
 ClientWidth := 500;
 ClientHeight := 400;
 BorderStyle := bsSingle;
 Position := poScreenCenter;

 fon := TBitmap.Create;
 fon.LoadFromFile("fon.bmp");

 Canvas.Pen.Color := clBlue;

 p1 := Point(150, 150);
 p2 := Point(350, 250);

 Randomize;

 Application.OnIdle := IdleHandler;
end;

procedure TmainForm.FormDestroy(Sender: TObject);
begin
 fon.Free;
end;

procedure TmainForm.FormPaint(Sender: TObject);
begin
 BitBlt(Canvas.Handle, 0, 0, 500, 400, fon.Canvas.Handle, 0, 0, SrcCopy);
 p1.x := ConcreteX(p1.x + (1-Random(3))*Random(5));
 p1.y := ConcreteY(p1.y + (1-Random(3))*Random(5));
 p2.x := ConcreteX(p2.x + (1-Random(3))*Random(5));
 p2.y := ConcreteY(p2.y + (1-Random(3))*Random(5));
 Canvas.MoveTo(p1.x, p1.y);
 Canvas.LineTo(p2.x, p2.y);
end;

end.



Страницы: 1 вся ветка

Текущий архив: 2004.06.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.022 c
3-1084528267
Alex_xxx
2004-05-14 13:51
2004.06.06
insert into table1 select key,kol from table2 ?????


11-1072366669
Xtz
2003-12-25 18:37
2004.06.06
Пороблема с мск


3-1084869152
It
2004-05-18 12:32
2004.06.06
Редактирование наборов данных в БД через Internet Explorer


3-1084562937
Ertong
2004-05-14 23:28
2004.06.06
select max from someDB


1-1085642307
Valeri
2004-05-27 11:18
2004.06.06
TDBImage, TImage