Модераторы: Snowy, Alexeis, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Движение с Миганиями 
:(
    Опции темы
Deiv
  Дата 8.11.2008, 01:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 11.2.2006
Где: ЛаПаc-Боливия (Ю жная Америка)

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



Здравствуйте,
У следующего кода есть эффект рисования текста в движении на любом объекте TForm; этот функционирует верно, но если я ввожу TImage фона (background) TForm, Delphi показывает мне ошибку на этой линии:
Border: = BorderWidth + 3;
ERROR
raised exception EAccess Violation

Как решать это ERROR?

Код

PaintTo (Bitmap. Canvas, Left, Top);//Draw the border
=> Border: = BorderWidth + 3;
       BitBlt (Bitmap. Canvas. Handle, Left + Border, Top + Border, Width - Border * 2, Height - Border * 2, Canvas. Handle, Left + Border, Top + Border, SRCCOPY);//and the content 

Код

unit MIMOuse;

interface

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

type
  TForm1 = class(TForm)
    Timer1: TTimer;
    Button1: TButton;
    Memo1: TMemo;
    procedure FormCreate(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  Step: Double=0;
  Bitmap: TBitmap;
  Circle: array [0..255] of TPoint;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Timer1.Interval := 33;
 Bitmap := TBitmap.Create;
 Bitmap.Width := ClientWidth;
 Bitmap.Height := ClientHeight;
 Bitmap.Canvas.Brush.Color := Color;
 Caption:= 'The New custom Cursor ';
end;

procedure TForm1.FormPaint(Sender: TObject);
var DestDC: Cardinal;
begin
 DestDC := GetWindowDC(Handle);
 BitBlt(DestDC, ClientOrigin.X - Left, ClientOrigin.Y - Top, Bitmap.Width, Bitmap.Height, Bitmap.Canvas.Handle, 0, 0, SRCCOPY);
 ReleaseDC(Handle, DestDC);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
 Size: Double;
 Value: TPoint;
 Index, Border: Integer;
begin
 Size := 360 / Length(Caption);
 with Bitmap.Canvas do
  begin
   FillRect(Classes.Rect(0, 0, Bitmap.Width, Bitmap.Height));
   for Index := 0 to ControlCount - 1 do
    with TWinControl(Controls[Index]) do
     if Visible then
      begin
       Repaint;
       PaintTo(Bitmap.Canvas, Left, Top); // Draw the border
       Border := BorderWidth + 3;
       BitBlt(Bitmap.Canvas.Handle, Left + Border, Top + Border, Width - Border * 2, Height - Border * 2, Canvas.Handle, Left + Border, Top + Border, SRCCOPY); // and the content
      end;
   SetBkMode(Handle, TRANSPARENT);
   for Index := 1 to Length(Caption) do
   begin
    with Circle[Index] do
     begin
      if Index < 1 then
        Value := Circle[Index - 1]
      else
        Value := ScreenToClient(Mouse.CursorPos);
      Inc(X, Round((Value.X - X) * 0.6));
      Inc(Y, Round((Value.Y - Y) * 0.6));
      TextOut(X + Round(66 * Cos(Step + Index * Size * (Pi / 180))),
              Y + Round(66 * Sin(Step + Index * Size * (Pi / 180))),
              Caption[Index]);
     end;
    end;
  end;
 FormPaint(nil);
 Step := Step - 0.06;
end;
end.

Как Новичок я попытался решить таким образом:
Я разместил TPanel такую (собственность Align=AllClient) как фон TForm'a и этот в свою очередь содержит TImage (собственность Align=AllClient; stretch=true), эффект работает нормально но медленнo, и у него есть проблема с перекрашенным, а именно очевидно много МИГАНИЕ, и медленнo.
Mне нужно в том, чтобы разместить в этом коде TImage как фон в TForm и также мне нужно, чтобы оно функционировало без миганий, Как?
Как решать и предотвращать это Мигание после того, когда повторно рисовано?
Как решать это без миганий?
Мигание, Мигание.......


The following code has a effect to redraw a text in movement on any object of the TForm; this it works perfectly, but if I introduce a TImage in background TForm's, Delphi shows me an error in this line:  
Border: = BorderWidth + 3
ERROR
raised exception EAccess Violation
As Beginner  I have tried to solve this way:  
I have placed a TPanel (property Align=AllClient) as background of the Form and east in turn contains the TImage (property Align=AllClient; stretch= true), the one  effect works normal but slowly, and it has a problem with the one repainted, that is to say a lot of TWINKLING (BLINKKINGS) and slowly.  
I need to place in this code a background TImage in the TForm and I need that it works without twinklings, How?  
How to solve and without blinkings to the redraw, please?


Это сообщение отредактировал(а) Deiv - 10.11.2008, 02:25
PM MAIL YIM   Вверх
AntonN
Дата 8.11.2008, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 18



а у TImage вроде нет paintro()...


--------------------
user posted image
PM MAIL WWW   Вверх
Deiv
Дата 9.11.2008, 03:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 11.2.2006
Где: ЛаПаc-Боливия (Ю жная Америка)

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



Цитата(AntonN)

а у TImage вроде нет paintro()...

Я не понял, paintro()...?????

PM MAIL YIM   Вверх
AntonN
Дата 9.11.2008, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 7
Всего: 18



ой, paintto() smile
код же перебирает все контролы и вызывает у каждого paintto()


--------------------
user posted image
PM MAIL WWW   Вверх
Deiv
Дата 9.11.2008, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 43
Регистрация: 11.2.2006
Где: ЛаПаc-Боливия (Ю жная Америка)

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



Вы можете пожалуйста осуществлять (исправлять) мой Исходник для того, чтобы оно функционировало нормально с onpaintto ()?  и это работало без миганий.
Вы можете показывать меня, как делать это в моей программе?

Это сообщение отредактировал(а) Deiv - 10.11.2008, 02:14
PM MAIL YIM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Звук, графика и видео"
Girder
Snowy
Alexeis

Запрещено:

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

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

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

FAQ раздела лежит здесь!


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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Звук, графика и видео | Следующая тема »


 




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


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

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