|
Вопрос # 2 518/ вопрос открыт / |
|
Здравствуйте, эксперты!
Хочу на фон программ поставить картинку! Но она не прямоугольная... (ну вообще-то прямоугольная, но описывает контур - все остальное прозрачное) Как можно сделать так, что бы места, в которых изображение прозрачное - было прозрачным? Конечно сформулировал непонятно... ну думаю разобрать о чем я можно.. Боьшое спасибо!
 |
Вопрос задал: Хитманчан (статус: Посетитель)
Вопрос отправлен: 13 марта 2009, 21:47
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Ученый
Здравствуйте, Хитманчан! Трудно понять чего вы хотите, но рискну предположить....
почитайте вот это...
там вы найдете ответ на свой вопрос...
 |
Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 13 марта 2009, 21:58
Оценка за ответ: 5
Комментарий к оценке: Большое спасибо!
|
Мини-форум вопроса
Всего сообщений: 9; последнее сообщение — 14 марта 2009, 17:13; участников в обсуждении: 3.
|
Хитманчан (статус: Посетитель), 13 марта 2009, 22:10 [#1]:
Ученый, да - про это я и говорил... только как-то это сильно сложно... че-то я думал, что как-то саму форму убрать с фона можно - и оставить один Image в который вгрузить PNG изображение с прозрачным фоном... Щас еще пару раз прочту - может пому что-то! Большое спасибо)
|
|
Amidamaru (статус: 4-ый класс), 13 марта 2009, 22:14 [#2]:
Работа с регионами только кажется сложной
|
|
Хитманчан (статус: Посетитель), 13 марта 2009, 22:19 [#3]:
Amidamaru, возможно! Прочитав еще раз понял, что тут только код вбить правильно надо... Но и это для меня что-то нереально... Ну вот как я делаю - создал новую форму - добавил в Image 1 PNG изображение с прозрачным фоном... Накопировал код от туда... весь проходит кроме вызова самой функции
SetWindowsRgn(Form1.Handle, True);
Куда ее, не подскажите, вставить?
|
|
Хитманчан (статус: Посетитель), 13 марта 2009, 23:17 [#4]:
Погуглил немного и нашел код... вообще класс! То, что доктор прописал)
procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.Brush.Style := bsClear;
Form1.BorderStyle := bsNone
end;
Но есть одно но! Если форму перемещать (Image) то оно вместе с собой фон берет) Вот код который использую для перемещения
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
Self.Perform(WM_SysCommand, SC_DragMove, 0);
end;
Может как-то можно добиться нормального перемещения? Спасибо!
|
|
Хитманчан (статус: Посетитель), 14 марта 2009, 11:46 [#5]:
Вот - сегодня нашел еще один код - тут все идиально с перемещением, но проблема с тем, что все полупрозрачные пиксели изображения пееркрашивает в цвет, который задаешь - тут стоит clLime... Что только не пробовал - но убрать не смог - только хуже было... Может подскажите, как это оключить можно? Выложил код (надеюсь правильно... нет - не вышло... извиняюсь) Спасибо...
<code>
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, pngimage, jpeg;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Image1: TImage;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderStyle := bsNone;
TransparentColorValue:=cllime;
TransparentColor:=true;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CLOSE;
end;
procedure TForm1.FormPaint(Sender: TObject);
var T:TTime;
begin
T:=(Now);
Canvas.Brush.Color:=cllime;
Canvas.Pen.Color:=cllime;
Canvas.Rectangle(0,0,Form1.Width,Form1.Height);
end;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
const
SC_DragMove = $F012;
begin
ReleaseCapture;
Self.Perform(WM_SysCommand, SC_DragMove, 0);
end;
end.
<code>
|
|
Dron (статус: Студент), 14 марта 2009, 11:52 [#6]:
Используйте компонент ShapedForm. Он есть на сайте в разделе Компоненты. Помимо картинки-фона нужно будет сделать чёрно-белый образ, чтобы определить, какие части формы убрать, а какие оставить. Делается это в том же Photoshop несколькими кликами. Компонент в использовании очень прост.
С уважением.
|
|
Хитманчан (статус: Посетитель), 14 марта 2009, 16:42 [#7]:
Dron, большое спасибо! Скачал компонент! Вроде установил... не могли бы Вы по подробнее рассказать как с этим работать! молжет пример завалялся какой-то у Вас..? Был бы очень признателен! Ато гугл устал от меня уже.... Спасибо!
|
|
Dron (статус: Студент), 14 марта 2009, 17:01 [#8]:
Там ничего сложного - есть свойство, отвечающее за картинку-образ. Туда нужно загрузить обычный bmp. Чёрный цвет - форма, белый - прозрачность (вроде бы так, хотя может и наоборот - это несложно узнать проверкой). Например, чёрный круг на белом фоне даст круглую форму. Картинка здесь не нужна - нужно только "пятно" для формы. После загрузки нужно поставить свойство активности в True. Называется скорее всего Active или Enabled. Всё, форма обретёт при запуске нужную форму.
С уважением.
|
|
Хитманчан (статус: Посетитель), 14 марта 2009, 17:13 [#9]:
Спасибо! Буду пробовать)
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|