Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.09.2009, 15:53   #11
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Цитата:
Сообщение от russian-stalker Посмотреть сообщение
Вы их синхронизируете? Попробуйте выставить меньший приоритет
я вот это код в нете нашел и использую

procedure printh(p: pointer); stdcall;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure printh(p: pointer);
begin
TForm1(p).caption := 'Hello from thread';
ExitThread(0);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
h1: cardinal;
begin
createthread(nil, 128, @printh, self, 0, h1);
end;

end.

Цитата:
Сообщение от mutabor Посмотреть сообщение
Большие картинки, будет дергаться.
Во первых если с имиджем, нужно задать DoubleBuffered для формы, а лучше битмапы на канву формы выводить.
Я не знаю как с помощию битмапа двивение организовать. эт наверно нужно перерисовывать битмап с новыми координатами, а как стереть предыдущий не знаю..
BuT@JL вне форума Ответить с цитированием
Старый 04.09.2009, 15:55   #12
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Попробуйте сперва DoubleBuffered, если не поможет то тогда уже дальше думать.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 04.09.2009, 15:57   #13
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
а как стереть предыдущий не знаю..
А зачем стирать? Рисуйте поверх старого, только следующим методом:
1) В изображение (TBitMap) с именем N рисуем маленькую картинку(которая двигается)
2) Выводим N на экран.
3) Закрашиваем N цветом (любым) Или просто стираем типа Clear, ":=Nil" и пр.
4) Переходим к шагу 1, предварительно изменив X или Y
Плюсы: Не мерцает, не дергается.
Вложения
Тип файла: rar Новая папка (2).rar (209.5 Кб, 8 просмотров)
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ

Последний раз редактировалось Alex Cones; 04.09.2009 в 16:01.
Alex Cones вне форума Ответить с цитированием
Старый 04.09.2009, 15:59   #14
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

DoubleBuffered у меня постоянно во всех проектах стоит он помогает от мерцания
BuT@JL вне форума Ответить с цитированием
Старый 04.09.2009, 16:02   #15
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

См пример в предыдущем посте.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 04.09.2009, 16:09   #16
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Рабочий код:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TMovingPicture = class(TThread)
    procedure movimage;
  private
    { Private declarations }
    x:integer;
  protected
    procedure Execute; override;
  end;

type
  TForm1 = class(TForm)
    Image1: TImage;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TMovingPicture.Execute;
var
i:integer;
begin
  { Place thread code here }
  for i:=0 to 100 do
  begin
    sleep(50);
    x:=i;
    Synchronize(movimage);
  end;
end;

procedure Tmovingpicture.movimage;
begin
  form1.Image1.Left:=form1.Image1.Left+1;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
mimage:TMovingPicture;
begin
   mimage:=Tmovingpicture.Create(true);
   mimage.FreeOnTerminate:=true;
   mimage.Priority:=tplower;
   mimage.Resume;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   DoubleBuffered:=true;
end;

end.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 04.09.2009, 17:05   #17
BuT@JL
Форумчанин
 
Регистрация: 27.11.2008
Сообщений: 137
По умолчанию

Спасибо вам большое за советы, все получилось )
BuT@JL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как запустить цикл for с шагом отличным от единицы Altera Общие вопросы Delphi 25 21.05.2015 15:14
Таймаут и бесконечный цикл Terikon Работа с сетью в Delphi 4 30.03.2009 14:48
цикл...и по ходу бесконечный... victum Помощь студентам 10 07.01.2009 15:57
Бесконечный цикл(visual c++) JOFRIF Visual C++ 10 26.08.2008 22:43
Бесконечный цикл Эдуард Общие вопросы C/C++ 4 03.04.2008 17:28