Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форма мерцает!!! Что такое? 
V
    Опции темы
Masdai
Дата 15.9.2006, 08:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 8.9.2006

Репутация: -2
Всего: -1



Сделал простенькие часы с циферблатом, ну что бы стрелочки шли............
ВОООООТ, идут они значит =) 
Форма обновляется частотой 1 сек и получается, что рисунок (циферблат и стрелки) начинает мерцать!!! А стрелки у меня сделаны из линии, ну знаете MoveTo и LineTo.


Вопрос:

ПОЧЕМУ???
PM MAIL   Вверх
586
Дата 15.9.2006, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Form1->DoubleBuffered=true;
PM   Вверх
Masdai
Дата 16.9.2006, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 8.9.2006

Репутация: -2
Всего: -1



А где это прописывать надо?
ПРобовал в различных местах - не помогло!!!
PM MAIL   Вверх
586
Дата 16.9.2006, 11:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



вот написал небольшой тест. у меня работает. разница ощутима.
Код
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 DoubleBuffered=true;
}

bool bDown;

void __fastcall TForm1::Image1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
 bDown=true;
 Image1->Canvas->Pixels[X][Y]=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 if(bDown)Image1->Canvas->Pixels[X][Y]=0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
 bDown=false;
}

Где рисуешь?
ЗЫ  Набери в поиске "DoubleBuffered"
PM   Вверх
Masdai
Дата 16.9.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 8.9.2006

Репутация: -2
Всего: -1



ААААААА 
Все вроде вышло! 

Написал так же как ты.....
И получилось!
В первом твоем посте просто по др. было...

Большое спасибо!!!!!!!!!!!!!
А рисую я в Билдере (если ты про это спрашиваешь)

Добавлено @ 12:25 
Но на этом примере что то плохо оно работает


Код

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int cx = 300, cy = 250;
int x = 300, y = 250;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
 : TForm(Owner)
{
 DoubleBuffered = true;
 Pole = new Graphics::TBitmap;
 Pole->Width = ClientWidth;
 Pole->Height = ClientHeight;
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormPaint(TObject *Sender)
{ 
 Canvas->Draw(0,0,Pole);
 Canvas->MoveTo(cx, cy);
 Canvas->LineTo(x, y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
x = X;
y = Y;
Form1->Panel1->Caption = x;
Form1->Panel2->Caption = y;
FormPaint(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 switch(Key)
 {
  case VK_LEFT :
   cx-=5;
   break;
  case VK_UP :
   cy-=5;
   break;
  case VK_RIGHT :
   cx+=5;
   break;
  case VK_DOWN :
   cy+=5;
   break;
 }
 FormPaint(Sender);
}
//---------------------------------------------------------------------------
__fastcall TForm1::~TForm1(void)
{
 delete Pole;
}

PM MAIL   Вверх
586
Дата 16.9.2006, 12:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 57
Всего: 146



Цитата(Masdai @  16.9.2006,  13:20 Найти цитируемый пост)
А рисую я в Билдере 

Я компонент имел ввиду smile 

Код
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int cx = 300, cy = 250;
int x = 300, y = 250;
Graphics::TBitmap *Pole;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 DoubleBuffered = true;
 Pole = new Graphics::TBitmap;
 Pole->Width = ClientWidth;
 Pole->Height = ClientHeight;
}

void __fastcall TForm1::FormPaint(TObject *Sender)
{
 Canvas->Draw(0,0,Pole);
 Canvas->MoveTo(cx, cy);
 Canvas->LineTo(x, y);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
      int X, int Y)
{
 x = X;
 y = Y;
 Form1->Panel1->Caption = x;
 Form1->Panel2->Caption = y;
 //FormPaint(Sender);
 Repaint();   // !!!!!!!!!!!!!!!!!!!!!!!!!
}

__fastcall TForm1::~TForm1(void)
{
 delete Pole;
}

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
 switch(Key)
 {
  case VK_LEFT :
   cx-=5;
   break;
  case VK_UP :
   cy-=5;
   break;
  case VK_RIGHT :
   cx+=5;
   break;
  case VK_DOWN :
   cy+=5;
   break;
 }
 //FormPaint(Sender);
 Repaint();
}


Это сообщение отредактировал(а) 586 - 16.9.2006, 12:47
PM   Вверх
Masdai
Дата 17.9.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 8.9.2006

Репутация: -2
Всего: -1



Все, все работает!
СПС за помощь!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0480 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.