Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Media";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Вниз

Моргает 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 вся ветка

Форум: "Media";
Текущий архив: 2004.06.06;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.068 c
4-1083689831
Defunct
2004-05-04 20:57
2004.06.06
Как определить номер потока?


6-1082063283
Dimedrol
2004-04-16 01:08
2004.06.06
Самый простенький Telnet клиент


4-1082800552
Delphist
2004-04-24 13:55
2004.06.06
Где взять мощный справочник по WinApi


1-1085333904
k@rt
2004-05-23 21:38
2004.06.06
Куда пропадают сиволы?


14-1084705910
Marser
2004-05-16 15:11
2004.06.06
Н-даа...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский