Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с DelphiX [D5, Win95/98]


Mihey ©   (2002-11-23 00:10:00) 

Попробовал компоненты DelphiX для Delphi 5. Довольно просто разобрался что к чему. Написал свою желанную программульку, запустил - и програ, показав чёрный экран, зависла. Хотя другие приложения на DelphiX идут нормально. Почему так???


Mihey   (2003-01-25 22:59:00) [1]

Так, по поводу юнитов я ответить не могу, а вообще я не гружу в TDXImageList в RunTime, если надо во время выполнения что-нить подгрузить, то для этого заранее создаю пункт в листе с некоторым именем, а потом туда загружаю только графу.

А инициализировтаь можно функцией Initialize, правда если она есть.


muxec   (2003-01-25 19:39:00) [2]

И ещё, а если у меня этот DXImageList находится в отдельном юните в разделе interface то поможет ли присваивание ImgList.DXdraw:=DXDraw1 внутри главного юнита который имеет в uses юнит с DXImageList?


muxec   (2003-01-25 19:35:00) [3]

Как? Ведь Initialized read-only. А вы DXImageList в рантайме делаети или на форму бросаете? То же касается картинок.


Mihey   (2003-01-25 19:03:00) [4]

Может, инициализировтаь как нить?


muxec   (2003-01-25 11:44:00) [5]

У меня есть проблема в том что перед выводом картинки у меня
imglist.Items.Items[i].Initialized
раыно false. Как с этим боротся?


Mihey   (2003-01-24 22:15:00) [6]

А я ещё одну особенность заметил. Допустим, гружу я картинку в TDXImageList. Если её фон чёрный, то далее она выводится прозрачно, причём делается это нормально. Если фон, например, фиолетовый, то картинка не будет прозрачной, хотя свойство Transparent стоит в True и прозрачный цвет определён. Это исрпавляется включением SystemMemory. Так вот.


Daddy   (2003-01-24 17:59:00) [7]

http://www.daddy.h1.ru/index.shtml?samples
http://www.daddy.h1.ru/index.shtml?dxarticles


Muxec   (2003-01-24 10:10:00) [8]

Tak hot" kto nibud" znaet kak vyvesti s pomochju imglist.Items.Items[i].Draw kartinku?


Grizun   (2002-12-11 21:35:00) [9]

У меня такая же проблема.Начал разбираться с DelphiX. попробывал один примерчик, сходный описаному выше, и первый раз заработало,все выводило( не заметил токо с транспарентом или нет), потом как то опять скомпилил и оно просто перестало выводить изображение. Текст на поверхность и pixels выводят, а Draw ни в какую ничего не хочет выводить. SystemMemory тоже не помогает, не пойму в чем дело...


Mihey   (2002-11-28 23:21:00) [10]

Так, не всё так плохо. Оказалось, что надо поставить свойство SystemMemory в True - тогда и прозрачным рисует, и быстрее.


Mihey   (2002-11-28 22:20:00) [11]

Ладно, давайте поотмазываюсь. DrawAlpha я рассматривал, всё там работает, но вот в игре Отбивалка ( http://delphigfx.mastak.ru/game5.htm) используется именно Draw для рисования прозрачной (не как текстурированной, а именно с одним прозрачным цветом) головы! Или у меня глюки, или...

Да, и остался вопрос - почему не выводится картинка вот в том простом примере.


Daddy   (2002-11-28 12:36:00) [12]

2pasha676: Как я понял речь не об Alpha а именно об одном прозрачном (transparent) цвете.

2Mihey: Вот глянь, http://daddy.h1.ru/index.shtml?dxarticle1


pasha676   (2002-11-28 09:24:00) [13]

Миха, ты меня растраиваешь :(. Пример AlphaBlending называется.

Там приводиться функция ImageList.Items[0].DrawRotateAlpha - это вращать изображения и делать его прозрачным. В TDXImage функции с прозрачностью - в их названии присутствует Alphа.Функция с рисованием - draw
Так например функция вывода изображения с прозрачностью будет
ImageList.Items[0].DrawAlpha(ну тут посмотришь параметры, последним как раз идет Alpha - коэффицент прозрачности);
Все прозрачно :).


Mihey   (2002-11-27 23:44:00) [14]

Спасибо вам за ответы. Действительно, с примерами довольно просто разобрался. Но вот возникла проблема, которую всё никак не могу решить.

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

unit tst;

interface

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

type
TForm1 = class(TForm)
DXDraw1: TDXDraw;
DXImageList1: TDXImageList;
DXTimer1: TDXTimer;
procedure DXTimer1Timer(Sender: TObject; LagCount: Integer);
procedure DXDraw1Initialize(Sender: TObject);
procedure DXDraw1Finalize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
DXDraw1.Surface.Fill(0);
DXImageList1.Items[0].Draw(DXDraw1.Surface, 0, 0, 0);
DXDraw1.Flip;
end;

procedure TForm1.DXDraw1Initialize(Sender: TObject);
begin
DXTimer1.Enabled := True;
end;

procedure TForm1.DXDraw1Finalize(Sender: TObject);
begin
DXTimer1.Enabled := False;
end;

end.

У меня был похожий проект, где изображение показывалось, но никак не становилось прозрачным. При этом хотелось бы остаться на методе Draw как элемента TDXImageList.


pasha676   (2002-11-26 10:04:00) [15]

2Namo
Не совсем проще. Ведь могут понадобиться такие вещи как подбор или изменение прозрачности по ходу выполнения программы.


Namo   (2002-11-25 19:42:00) [16]

мона проще в ДХГ файле с прозрачностью заранее сделать, а потом в рантайме грузить из файла и юзать.


pasha676   (2002-11-25 10:08:00) [17]


> Вот вы лучше расскажите, а ещё лучше - покажите на примере,
> как загружать графику в TDXImageList с указанием прозрачности,
> а то у меня с ходу не получилось.

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


Mihey   (2002-11-23 23:43:00) [18]

Так, я забыл уточнить - загружать графу в run-time!


Mihey   (2002-11-23 23:42:00) [19]

Ну, бракованное молоко я бы покупать не стал. А причину выяснил - надо, оказывается, особождать канву методом Release после того, как ею попользовался. Жаль, что нигде этого в примерах сайта не было отмечено.

Нашёл и другую западню. По привычку жму двойным по TDXTimer и пишу обработчик. А обработчик то OnActivate, а не OnTimer. Ну, ошибка бросовая, но бывает... бывает...

Вот вы лучше расскажите, а ещё лучше - покажите на примере, как загружать графику в TDXImageList с указанием прозрачности, а то у меня с ходу не получилось.


Namo   (2002-11-23 21:21:00) [20]

а почему пакет молока прокис, а другой нет, хотя купил я их одновременно?
Этот вопрос такой же сложности как и твой. Вот например этот пакет я хранил на солнце а другой в холодильнике.
А ты что нить скажешь об "окружающих условиях"?
;))


Наверх

Титульная страница Поиск, карта сайта Написать письмо