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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Canvas и Alphaskins, Проблема со стиранием 
:(
    Опции темы
BEST13
Дата 7.3.2010, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте,
Я загружаю в свой программу картинки в формате Bmp  и рисую их на Canvas. Но вот когда хочу Стереть нарисованное, то "скинированый" фон пропадает.  Подскажите, как можно решить эту проблему.
До нажатия на кнопку очистить.
user posted image
И после.
user posted image

И второй вопрос:
В тех Bmp, что я загружаю  в программу фон белый, и когда я запускай он таким и остаёться, хотя я включил прозрачность(pic_Letter.Transparent:=true). В чём может быть проблема?    

Код

unit U_Trans;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, sEdit, sButton, sSkinManager, sRadioButton, ExtCtrls,
  sPanel, jpeg;

type
  TForm1 = class(TForm)
    sSkinManager1: TsSkinManager;
    sB_trans: TsButton;
    sE_Name: TsEdit;
    sRB_man: TsRadioButton;
    sRB_Woman: TsRadioButton;
    sB_Clear: TsButton;
    Image1: TImage;
    procedure FormCreate(Sender: TObject);
    procedure sB_transClick(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure sB_ClearClick(Sender: TObject);
   
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  pic_Letter:TBitmap;
  Man:Boolean= true;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
pic_Letter:=TBitmap.Create;
pic_Letter.Transparent:=true;


end;

procedure TForm1.sB_transClick(Sender: TObject);
var i:byte; Fname,name1:string; x,y:integer;
begin
 //sB_ClearClick(Sender);
 x:=50;
 y:=50;
 name1:=sE_Name.Text;
 For i:=1 to Length(name1) do
  begin
   If ord(name1[i])<>32 then
    begin
     Fname:=name1[i]+'.bmp';
     pic_Letter.LoadFromFile('Letters\' +Fname);
     Canvas.Draw(x,y,pic_Letter);
     y:=y+pic_Letter.Height;
    end;
   end;
 if sRB_man.Checked then pic_Letter.LoadFromFile('Letters\man.bmp')
                    else pic_Letter.LoadFromFile('Letters\woman.bmp');
 Canvas.Draw(x,y,pic_Letter);
 y:=y+pic_Letter.Height;
 Canvas.Brush.Style:=bsClear;
 Canvas.Pen.Width:=3;
 Canvas.RoundRect(x-10,40,x+(pic_Letter.Width+10),y+10,80,80);

end;

procedure TForm1.FormDestroy(Sender: TObject);                          
begin
pic_Letter.Free;
end;

procedure TForm1.sB_ClearClick(Sender: TObject);
begin
 //sSkinManager1.Active:=false;
 Canvas.Brush.Color:=Form1.color;
 Canvas.FillRect(Rect(0,0,Form1.Width,Form1.Height));
 //sSkinManager1.Active:=true;
end;



end.

PM MAIL ICQ GTalk   Вверх
kami
Дата 8.3.2010, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



По первому вопросу лучше обратиться к разработчикам, имхо.
На первое время может помочь sSkinManager1.RepaintForms (это навскидку, не работал плотно с этими компонентами).
PM MAIL WWW   Вверх
BEST13
Дата 8.3.2010, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Да, я хотел написать у них на форуме. Но почему, то не могу зарегистрироваться, Постоянно выдает ошибку неправильного ввода  кода проверки. 
PM MAIL ICQ GTalk   Вверх
BEST13
Дата 9.3.2010, 22:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вот кажеться, я придумал решение, но оно не совсем правильно работает( 

Я использую Image но почему то, у меня только на время  показывается все картинки,  а остаётся только одна последняя и рамочка. Как на первом скрине
Код

procedure TForm1.sB_transClick(Sender: TObject);
var i:byte; Fname,name1:string; x,y:integer;
begin
 //sB_ClearClick(Sender);
 x:=50;
 y:=50;
 name1:=sE_Name.Text;
 For i:=1 to Length(name1) do
  begin
   If ord(name1[i])<>32 then
    begin
     Fname:=name1[i]+'.bmp';
     pic_Letter.LoadFromFile('Letters\' +Fname);
     Canvas.Draw(x,y,pic_Letter);
     y:=y+pic_Letter.Height;
    end;
   end;
 if sRB_man.Checked then pic_Letter.LoadFromFile('Letters\man.bmp')
                    else pic_Letter.LoadFromFile('Letters\woman.bmp');
 with Image1 do
 begin
 Canvas.Draw(x,y,pic_Letter);
 y:=y+pic_Letter.Height;
 Canvas.Brush.Style:=bsClear;
 Canvas.Pen.Width:=3;
 Canvas.RoundRect(x-10,40,x+(pic_Letter.Width+10),y+10,80,80);

end;
end;
 

Это сообщение отредактировал(а) BEST13 - 9.3.2010, 22:18
PM MAIL ICQ GTalk   Вверх
BEST13
Дата 14.3.2010, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Люди добрые помогите.
PM MAIL ICQ GTalk   Вверх
Proxin
Дата 18.3.2010, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



альфаскинс - тяжёлая, плохая вещь. лучше уже все скины рисовать сразу на форме.
PM MAIL   Вверх
Mikel
Дата 18.3.2010, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник Клуба
Сообщений: 882
Регистрация: 30.3.2002
Где: Саратов

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



А зачем все закрашивать? Invalidate  не работает в качестве стирания?


--------------------
...so remember, it's better to burn out than to fade away
PM MAIL ICQ   Вверх
BEST13
Дата 19.3.2010, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Proxin @  18.3.2010,  11:08 Найти цитируемый пост)
альфаскинс - тяжёлая, плохая вещь. лучше уже все скины рисовать сразу на форме.


Возможно и так, но я не сильно хорошо рисую, что бы делать свои скины, а альфа скин просты в реализации и бесплатны)))

  

Цитата(Mikel @  18.3.2010,  14:07 Найти цитируемый пост)
А зачем все закрашивать? Invalidate  не работает в качестве стирания?

 Я та понимаю она перерисовывает? Или как?
Завтра попробую и отпишусь, спасибо smile 
PM MAIL ICQ GTalk   Вверх
BEST13
Дата 24.3.2010, 23:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Mikel,  Я проверил ничего не меняется не стирает((

Писал так:
Код

procedure TForm1.sB_ClearClick(Sender: TObject);
begin

 Form1.Invalidate;
end;

 и так:
Код

procedure TForm1.sB_ClearClick(Sender: TObject);
begin

Invalidate;
end;

PM MAIL ICQ GTalk   Вверх
BEST13
Дата 25.3.2010, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



kami, Спасибо.  Попробовал твой способ действительно работает) хотя форма мигает, и поковырявшись дальше  написал так:
Код

 sSkinManager1.UpdateSkin;

Так тоже мигает но, через раз) 
Может еще у кого-то найдутся варианты?

Это сообщение отредактировал(а) BEST13 - 25.3.2010, 19:37
PM MAIL ICQ GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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