Вверх ↑
Этот топик читают: Гость
Ответов: 1291
Рейтинг: 47
#1: 2023-03-31 13:51:05 ЛС | профиль | цитата
Как применять "Кисть текстурной заливки" ? При использовании более одного экземпляра - Run Time Еrror
Вставить свою картинку (вставлял божью коровку от Sla8a).

Add(MainForm,2953706,21,98)
{
Height=400
Point(Handle)
Point(onPaint)
}
Add(Bitmap,1780797,483,196)
{
@Hint=#18:Вставить картинку!|
}
Add(Timer,16100337,126,280)
{
Interval=330
link(onTimer,8025807:doRefresh,[])
}
Add(GP_Canvas,13164349,287,280)
{
Name="myCanvas"
link(onSet,2115229:doSet,[])
link(Bitmap,8025807:Bitmap,[(293,268)(261,268)(261,324)(230,324)])
}
Add(PaintBox,8025807,224,280)
{
Left=160
Top=40
Width=345
Height=295
Align=5
Color=-16777196
ClearBeforeDraw=0
link(onBeforeDraw,13164349:doSet,[])
}
Add(GP_BrushTexture,2115229,476,280)
{
Index="1"
Canvas="myCanvas"
link(onSet,855326:doDraw,[])
link(Picture,8690138:Var2,[])
AddHint(-2,-30,21,13,Index)
}
Add(GP_Rectangle,855326,518,280)
{
Width=200
Hieght=200
View=2
Brush="1"
Canvas="myCanvas"
link(onDraw,4231292:doSet,[])
}
Add(GP_BrushTexture,4231292,567,280)
{
WrapMode=1
Index="2"
Canvas="myCanvas"
link(onSet,6505614:doDraw,[])
link(Picture,8690138:Var3,[(580,257)])
AddHint(-2,-30,21,13,Index)
}
Add(GP_Rectangle,6505614,616,280)
{
X=200
Width=200
Hieght=200
View=2
Brush="2"
Canvas="myCanvas"
}
Add(GetDataEx,8690138,483,252)
{
link(Data,1780797:Bitmap,[])
}


--- Добавлено в 2023-03-31 14:29:22

Если картинку вставить в сами элементы, то тогда все нормально. Но тогда ее не получится менять программно на более чем одном элементе.

Редактировалось 1 раз(а), последний 2023-03-31 14:29:22
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
1
Голосовали:sla8a
Ответов: 2236
Рейтинг: 676
#2: 2023-03-31 16:27:30 ЛС | профиль | цитата
Aziz, элементы в стадии тестирования и не входя в стандартный пакет, лучше было бы написать об ошибке в самой теме по элемента. Дело в том что у большинства этих элементов нет и они не смогут вам помочь. Посмотрю в чем проблеме и постараюсь исправить.
карма: 11

0
Ответов: 1291
Рейтинг: 47
#3: 2023-03-31 16:43:54 ЛС | профиль | цитата
Ок, sla8a, учту на будущее. Спасибо.
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
Ответов: 494
Рейтинг: 163
#4: 2023-03-31 22:50:09 ЛС | профиль | цитата
Aziz писал(а):
Если картинку вставить в сами элементы, то тогда все нормально.

sla8a , для заметки , если брать картинки для каждого из разных битмапов то тоже всё нормально.
пример


Add(MainForm,3053255,413,189)
{
Width=558
Height=427
Point(Handle)
Point(onPaint)
}
Add(Bitmap,1780797,651,196)
{
@Hint=#18:Вставить картинку!|
Picture=[ZIP3603000078DAA5523B0E83300CA5EA053A76EFD2A92333EA5E0123E2382044E02C2084805340E01219986104DAA7A64588A0A81F4B8E2CDB71FCDECBF5A6EE95A7A9F033FCF0F29D72E405D44F17EE6FBBFF67D334D575CD47354D236F8EE3D8344D42489665699A7A9EA7EB3A0294C44D9009C3701CC765721806E45DD75DF547511404C1E6A365595A96A569DA7267C3305693E7474566AAAAC2CE9F7382BB4551C87BFABE6FDB96C78CB1AEEBE4FD799E7F2596EFFB945239AED9400574012D730674D9B60DEA3687431748B982EC388E381C93A1CBA6B8389324C107C0AAF80300884EE80229E5D0808B0341B0DCF9377B00DED88780]
}
Add(Timer,16100337,413,259)
{
Interval=330
link(onTimer,8025807:doRefresh,[])
}
Add(GP_Canvas,13164349,532,259)
{
Name="myCanvas"
link(onSet,2035692:doEvent1,[])
link(Bitmap,8025807:Bitmap,[(538,247)(519,247)(519,305)(475,305)])
}
Add(PaintBox,8025807,469,259)
{
Width=542
Height=388
Align=5
Color=-16777196
ClearBeforeDraw=0
link(onBeforeDraw,13164349:doSet,[])
}
Add(GP_BrushTexture,2115229,644,259)
{
Index="1"
Canvas="myCanvas"
link(onSet,855326:doDraw,[])
link(Picture,1780797:Bitmap,[])
AddHint(0,35,21,13,Index)
}
Add(GP_Rectangle,855326,756,259)
{
Width=200
Hieght=200
View=2
Brush="1"
Canvas="myCanvas"
}
Add(GP_BrushTexture,4231292,693,315)
{
WrapMode=1
Index="2"
Canvas="myCanvas"
link(onSet,6505614:doDraw,[])
link(Picture,9788816:Bitmap,[])
AddHint(6,39,21,13,Index)
}
Add(GP_Rectangle,6505614,756,315)
{
X=200
Width=200
Hieght=200
View=2
Brush="2"
Canvas="myCanvas"
}
Add(Hub,2035692,588,259)
{
link(onEvent1,2115229:doSet,[])
link(onEvent2,4231292:doSet,[(624,272)(624,321)])
}
Add(Bitmap,9788816,700,196)
{
@Hint=#18:Вставить картинку!|
Picture=[ZIP3603000078DA9D523D6A8440189D648B142952EC1E22654E10247D504BB1C911720745FC81901B78024544ADD2A75149E10D8285DD8096A393B7996576519190274F87E737DF7CDFF7E6E9F98D083C82F7E0E1C42B3C4768E0FE56F09A0872CE49D334F852C110BC3B31141AEBC11BA17DB3574229251FBB2F12F277F2393D10FA82FF3B7ACEF1CB25E238D675DDF3BC2CCBD234751C4755552C8E3590F90E2841108CE3782932C6A0DBB63D8B8FA2C8F7FDB5337959968661288A2295699A344D9B6596874A48B1AA2AD4CCFF0CEC2D8A623B661886AEEBC4BA6DDBBEEFB7E3F33C5F8E6803AEEBD675BDDD970446015F3016A9605CA6696274ABC9E10BAC9CB56C59D6323932C3975573F14E92041700A5E20EA04144C21758B9DD1AFA128D607159F3FFF003CEDF6D20]
}

карма: 4

1
Голосовали:sla8a
Ответов: 2236
Рейтинг: 676
#5: 2023-04-01 15:07:24 ЛС | профиль | цитата
Внес изменения в pas файл:
unit hiGP_BrushTexture;

interface

uses Windows,Kol,Share,ActiveX,Debug,hiGP_Canvas,GDIPOBJ,GDIPAPI;

type
THIGP_BrushTexture= class(TDebug)
private
bmp: PBitmap;
procedure SetPicture(Value:HBITMAP);
public
_prop_WrapMode:integer;
_prop_FileName:string;
_prop_FromFile:boolean;
_prop_UseMatrix:boolean;
_prop_Index: string;
_prop_Canvas:PICurrentCanvas;

_data_Picture:THI_Event;
_data_FileName:THI_Event;
_data_WrapMode:THI_Event;
_data_Index:THI_Event;
_event_onSet: THI_Event;

constructor Create;
destructor Destroy; override;
procedure _work_doSet(var _Data:TData; Index:word);
procedure _work_doFromFile(var _Data:TData; Index:word);
property _prop_Picture:HBITMAP write SetPicture;
end;

implementation

constructor THIGP_BrushTexture.Create;
begin
inherited Create;
bmp := NewBitmap(0,0);
end;

destructor THIGP_BrushTexture.Destroy;
begin
if Assigned(bmp) then bmp.Free;
inherited;
end;

procedure THIGP_BrushTexture._work_doSet;
var iBrush:string;
ist:IStream;
pst:PStream;
TextureBrush:TGPTextureBrush;
GPImage: TGPImage;
wrap: integer;
GPMatrix: TGPMatrix;
bmpLoad:PBitmap;
begin
if not Assigned(_prop_Canvas) then exit;
if _prop_FromFile then
begin
GPImage := TGPImage.Create(ReadString(_data,_data_FileName,_prop_FileName));
if GPImage.GetType <> ImageTypeBitmap then exit;
end
else
begin
bmpLoad := ReadBitmap(_Data,_data_Picture,nil);
if (bmpLoad <> nil) then
bmp.Assign(bmpLoad);
if bmp.Empty then
exit;
pst := NewMemoryStream;
bmp.SaveToStream(pst);
if CreateStreamOnHGlobal(0, true, ist) = S_OK
then ist.write(pSt.Memory,pst.Size,nil);
GPImage := TGPImage.Create(ist);
pst.Free;
ist := nil;
end;
wrap := ReadInteger(_data,_data_WrapMode,_prop_WrapMode);
iBrush := ReadString(_data,_data_Index,_prop_Index);
TextureBrush := TGPTextureBrush.Create(GPImage, TWrapMode(wrap));
GPImage.Free;
if _prop_UseMatrix then begin
TextureBrush.SetTransform(_prop_Canvas.Get_Matrix);
GPMatrix := _prop_Canvas.Get_Matrix;
GPMatrix.Reset;
end;
_prop_Canvas.Set_Brush(TextureBrush.Clone,iBrush);
TextureBrush.Free;
_hi_CreateEvent(_Data,@_event_onSet);
end;

procedure THIGP_BrushTexture._work_doFromFile;
begin
_prop_FromFile := ReadBool(_Data);
end;

procedure THIGP_BrushTexture.SetPicture;
begin
if Value = 0 then exit;
bmp.Handle := Value;
end;

end.
Ошибка пропала, но хорошо бы протестировать хорошенько. Желательно отписаться по итогам тестирования, внесу изменения в архив со всеми элементами данной группы.

Редактировалось 1 раз(а), последний 2023-04-01 16:32:35
карма: 11

0
Ответов: 1291
Рейтинг: 47
#6: 2023-04-01 17:17:04 ЛС | профиль | цитата
sla8a, спасибо, работает, потестим..
карма: 3
Hiasm + Flowstone + CopperCube + GoDot + JS
0
6
Сообщение
...
Прикрепленные файлы
(файлы не залиты)