Вверх ↑
Этот топик читают: Гость
Ответов: 4400
Рейтинг: 472
#226: 2019-05-05 12:53:35 ЛС | профиль | цитата
nesco, Привет! Чего хоть поглядел черкни.
карма: 4

0
Ответов: 4400
Рейтинг: 472
#227: 2019-05-06 04:18:43 ЛС | профиль | цитата
nesco,чёт я переживаю за тебя
карма: 4

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#228: 2019-05-06 10:48:18 ЛС | профиль | цитата
andrestudio писал(а):
чёт я переживаю за тебя

А в чем проблема?. Ты мне подсунул какой-то кусанный код, по крайней мере, в нем нет картинок на вкладках, и пока совсем непонятно, как их там отрисовать. С прозрачностью вообще творится какой-то швах. Да и на полноценный Page-контрол это как-то мало смахивает, больше на контрол заголовка от Page-контрола. Поэтому, что бы что-то сделать, надо сначала разобраться в том, кто там чего намутил, и как это все можно привести к нормальному виду. А для этого нужно время и большое желание.

Редактировалось 1 раз(а), последний 2019-05-06 10:50:20
карма: 19

0
Ответов: 4400
Рейтинг: 472
#229: 2019-05-06 16:20:06 ЛС | профиль | цитата
nesco, привет. Во первых не подсунул а предоставил тебе ознакомится с тем что уже переведено и заметь по твоей просьбе(в следующий раз достаточно будет и оригинала, чай не барин переводи сам) трабла в прозрачности в одной строке

FColorBackground := Color2RGB(Control.Color);

Все остальные проблемы тоже надуманы. Короче можешь забить, справлюсь сам. Не буду отнимать твоё драгоценное время.

Редактировалось 1 раз(а), последний 2019-05-06 16:20:24
карма: 4

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#230: 2019-05-06 19:11:54 ЛС | профиль | цитата
andrestudio писал(а):
трабла в прозрачности в одной строке

Муйня это, а не прозрачность, по крайней мере, в том коде, который ты представил. Может в твоем и нормально.



Вот что я понимаю под настоящей прозрачностью



Это AlphaImage со включенной прозрачность контрола

andrestudio писал(а):
Короче можешь забить, справлюсь сам

Как хочешь, я вроде тебе и не собирался помогать.

Редактировалось 3 раз(а), последний 2019-05-06 19:29:09
карма: 19

0
Ответов: 4400
Рейтинг: 472
#231: 2019-05-09 21:01:29 ЛС | профиль | цитата
Всех с праздником!
Не знаю какую ты там прозрачность ищешь, её и авторском варианте то нет. (да и не нужна она там сильно)
nesco писал(а):
Как хочешь, я вроде тебе и не собирался помогать.

Мудро поступил, потому как я сегодня не бухал и сделал всё сам. Да даже более чем, удалось реализовать почти всё, кроме перемещений вкладок. Есть пока досадный косячёк. При пустом списке вкладок чёт всё падает в runtime error. с хинтами тоже не всё удачно, привязался пока к mousemove. Короче все методы и свойства в ini файле в архиве.
Вот собственно демка https://yadi.sk/d/cub0Lpd1bqY2Mw

Кто людям помогает тот время тратит зря, правдаnesco
карма: 4

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#232: 2019-05-09 22:47:44 ЛС | профиль | цитата
andrestudio писал(а):
Да даже более чем, удалось реализовать почти всё, кроме перемещений вкладок

Молодец, возьми на полочке пирожок.
andrestudio писал(а):
Не знаю какую ты там прозрачность ищешь

Ту самую, которая истинная прозрачность с альфа каналом как в мультислойных формах, да хотя бы по границам. А не попытка отрисовать фон парента на контроле, вот поэтому и не отрисовывается все это безобразие прозрачно поверх чилдренов.
andrestudio писал(а):
Кто людям помогает тот время тратит зря

Ты не просил помочь, ты просил доделать
andrestudio писал(а):
возьмётесь доделать

Дал посмотреть код, в котором вообще не понятно что доделывать, только на сам контрол посмотреть, так мы и так его видели. Думал хоть прозрачность там нормальная реализована, а там полный швах с прозрачностью, простая обманка, которую выдают за Вау. По сему, я не хочу с тобой иметь больше никаких дел. DIXI.

Редактировалось 4 раз(а), последний 2019-05-09 23:16:46
карма: 19

0
Ответов: 4400
Рейтинг: 472
#233: 2019-05-10 13:55:46 ЛС | профиль | цитата
nesco писал(а):
Молодец, возьми на полочке пирожок.

Спасибо, оставь себе на закуску
nesco, если бы у меня было много времени я бы не просил о помощи (к сожалению покодить на работе у меня нет возможности)
А обратился к тебе как к более опытному коллеге.
nesco писал(а):
в котором вообще не понятно что доделывать,
Да уж, чего не ожидал того не ожидал, что там не понятно то, vcl методы портированы, нужно было ини прописать да HiAsm методы пришурупить.
Далее про прозрачность, я тебе в личке писал что этот компонент старый и не поддерживается автором, и название его указал SmartTabs его последняя версия 2.4 (искать нужно не в загрузках а в обновлениях) ссылка на его сайт есть в шапке исходника. Коду там конечно в два раза больше но не критично, порту поддаётся. Вот там и есть твои зеркальные стеклянные вкладки со скролингом и в право и влево.

а вообще andrestudio не такой злой как тебе кажется и иногда делает хорошие дела, как например сегодня. Порт старинного компонента, кое как нашёл его рабочий архив в интернете. DsFramedImage

Позволяет делать рамочки к картинкам, просто но со вкусом. Я его правда слегка модернизировал на загрузку изображений из памяти и файлов (о блин, забыл, хотел по URL ещё сделать, пока пишу вспомнил, во лошара, всё, пора видать дефрагментоз устроить, а память отшибает уже)
Сам компонент и пример тут http://forum.hiasm.com/getfile/38656

Редактировалось 1 раз(а), последний 2019-05-10 14:13:51
карма: 4

0
Ответов: 4400
Рейтинг: 472
#234: 2019-05-11 07:04:32 ЛС | профиль | цитата
Кстати nesco, забыл упомянуть. В этом компоненте стрим загружается с помощью CreateStreamOnHGlobal 7-строк. Теперь можешь сравнить со своей портянкой. Или как в детском стишке что-ли
nesco писал(а):
По сему, я не хочу с тобой иметь больше никаких дел. DIXI.


Слушай, ты мне больше не дружок,
Забирай свои игрушки и не писай в мой горшок!

Ну как минимум не профессионально, ну да, характером может мы и не сошлись ну ведь обмениваться опытом мы можем (да по сути и должны) Ну а кто хочет сказать что я алкаш то пусть это докажет своими делами а не безделием, сразу сниму шляпу. nesco, а по поводу прозрачности может она и не нужна сильно , вроде и так не плохо смотрится

карма: 4

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#235: 2019-05-11 13:40:17 ЛС | профиль | цитата
andrestudio писал(а):
Теперь можешь сравнить со своей портянкой

Это не моя вообще-то портянка, я сам ее благополучно стырил с чьего-то готового кода, вроде даже с дельфийского vcl. А вот переделывать сейчас как-то не совсем хочется, лучшее -- враг хорошего.
andrestudio писал(а):
Ну а кто хочет сказать что я алкаш то пусть это докажет своими делами а не безделием

Откуда ты это вообще взял, тут про это никто даже вроде и не думал, по крайней мере, у меня такого точно в мыслях не было.
andrestudio писал(а):
а по поводу прозрачности может она и не нужна сильно

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

P.S. Да, кстати, GDI знатно так портит png картинки, ты не замечал такого, возникает артефакт с alpha-каналом, он становится какой-то рваный? При построении SenseWidge-та мне пришлось отказаться от GDI-компонента и использовать обычный PNG компонент.

Редактировалось 1 раз(а), последний 2019-05-11 13:46:10
карма: 19

0
Ответов: 4400
Рейтинг: 472
#236: 2019-05-14 11:30:36 ЛС | профиль | цитата
nesco писал(а):
Да, кстати, GDI знатно так портит png картинки

nesco, есть ещё один маленький загрузчик PNG от Bero https://www.pascalgamedevelopment.com/showthread.php?9861-BeRoPNG-A-very-tiny-but-complete-PNG-loader/page2 Всё хотел его попробовать да всё руки не доходят, сегодня в сад не еду, дожди попёрли. может сегодня попробую если получится. Чувак его в свойх демо-сценах (64кб) использовал.
карма: 4

0
Ответов: 3943
Рейтинг: 622
#237: 2019-05-14 11:50:35 ЛС | профиль | цитата
andrestudio писал(а):
ну да, характером может мы и не сошлись ну ведь обмениваться опытом мы можем (да по сути и должны)
andrestudio, не обижайся, но ты в последние годы слишком конфликтным стал - на ровном месте склоки получаются. Просто постарайся при "обмене опытом" не переходить на личности, не обижаться на пустяки, неудачные с твоей точки зрения формулировки коллег и т.п.
карма: 19

0
Ответов: 4400
Рейтинг: 472
#238: 2019-05-14 20:36:43 ЛС | профиль | цитата
Netspirit, хорошо, постараюсь. Короче загрузчик работает. Но чего-то с альфой нужно делать, замешивать видать её с растром нужно врукопашную. Пока лень вообще чего-то делать...

Add(MainForm,2953706,119,119)
{
Width=675
Height=394
}
Add(InlineCode,5172055,182,175)
{
WorkPoints=#6:doLoad|
EventPoints=#8:onBitmap|
DataPoints=#9:PNGStream|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,Share,Debug,BeRoPNG;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|22: fStream: PStream;|19: fBmp: PBitmap;|9: public|26: PNGStream: THI_Event;|25: onBitmap: THI_Event;|48: procedure doLoad(var dt: TData; idx: word);|5: |5: end;|0:|14:implementation|0:|4:type|22: pLongInt = ^LongInt;|0:|142://function LoadPNG(DataPointer:pointer;DataSize:longword;var ImageData:pointer;var ImageWidth,ImageHeight:longint;HeaderOnly:boolean):boolean;|0:|29:procedure THiAsmClass.doLoad;|3:var|17: w,h,i: integer;|17: ps,pb: Pointer;|26: pDWord,pImgDt: pLongInt;|5:begin|38: fStream := ToStreamEvent(PNGStream);|32: if fStream.Size = 0 then Exit;|24: fStream.Position := 0;|23: ps := fStream.Memory;|40: LoadPNG(ps,fStream.Size,pb,w,h,False);|36: fBmp := NewDIBBitmap(w,h,pf32bit);|52: //fBmp.Canvas.Brush.Color := Color2RGB(clBtnFace);|44: //fBmp.Canvas.Brush.BrushStyle := bsSolid;|44: //fBmp.Canvas.FillRect(MakeRect(0,0,w,h));|45: // ещё и растр надо перевернуть до кучи! |48: pDWord := pb; inc(pDWord,fBmp.DIBSize div 4); |25: pImgDt := fBmp.DIBBits;|37: for i := 1 to fBmp.DIBSize div 4 do|7: begin|16: dec(pDWord);|38: pLongInt(pImgDt)^ := pDWord^; |16: inc(pImgDt);|7: end; |2: |29: _hi_onEvent(onBitmap,fBmp);|12: fBmp.Free;|4:end;|0:|4:end.|
link(onBitmap,3887628:doLoad,[])
link(PNGStream,8883465:Stream,[])
}
Add(Image,3887628,245,175)
{
Left=230
Top=10
Width=406
Height=321
ViewStyle=0
}
Add(Button,6686917,119,175)
{
Left=30
Top=25
Caption="test"
link(onClick,5172055:doLoad,[])
}
Add(MemoryStream,8883465,182,119)
{
}
Add(InfoTip,7022632,168,98)
{
Info=#8:PNG file|
VAlign=1
Width=155
Height=60
}

карма: 4

0
Разработчик
Ответов: 25463
Рейтинг: 2071
#239: 2019-05-14 22:18:10 ЛС | профиль | цитата
andrestudio писал(а):
замешивать видать её с растром нужно врукопашную

А ты не пробовал использовать Image, который Alpha? Он же специально разработан именно для картинок с alpha-каналом

Редактировалось 1 раз(а), последний 2019-05-14 22:19:03
карма: 19

0
Ответов: 4400
Рейтинг: 472
#240: 2019-05-15 20:59:59 ЛС | профиль | цитата
Попробовал, всё равно фигня получается. Там до кучи формат пиксела отличается и развёртка обратная (для OpenGL пойдёт без переделки) Вот так более менее правильно отображает, но конвертирование формата пиксела и копирование буфера могут свести на нет быстродействие отрисовки, да и альфа эта чёт не работает, короче х.з

Add(InlineCode,16579447,182,175)
{
WorkPoints=#6:doLoad|
EventPoints=#8:onBitmap|
DataPoints=#9:PNGStream|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|37:uses kol,windows,Share,Debug,BeRoPNG;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|22: fStream: PStream;|25: //fBmp: Kol.PBitmap;|9: public|26: PNGStream: THI_Event;|25: onBitmap: THI_Event;|48: procedure doLoad(var dt: TData; idx: word);|5: |5: end;|0:|14:implementation|0:|4:type|22: pLongInt = ^LongInt;|24: PCardinal = ^Cardinal;|0:|142://function LoadPNG(DataPointer:pointer;DataSize:longword;var ImageData:pointer;var ImageWidth,ImageHeight:longint;HeaderOnly:boolean):boolean;|0:|39:function Swap(inInt: LongInt): LongInt;|3:var|44: rgba: array [0..3] of byte absolute inInt;|46: argb: array [0..3] of byte absolute Result; |5:begin|22: argb[0] := rgba[2]; |21: argb[1] := rgba[1];|21: argb[2] := rgba[0];|21: argb[3] := rgba[3];|2: |27: //argb[0] := 0; //Blue|28: //argb[1] := 0; //Green|26: //argb[2] := 255; //Red|32: //argb[3] := 255; //Alpha |4:end;|0:|54:procedure ARGB2ABGR(AColor: Pointer; ACount: Integer);|3:var|35: Color: PCardinal absolute AColor;|17: Index: Integer;|5:begin|33: for Index := 0 to ACount - 1 do|7: begin|85: Color^ := Color^ and $FF00FF00 + Color^ and $FF shl 16 + (Color^ shr 16) and $FF;|15: Inc(Color);|6: end;|4:end;|0:|29:procedure THiAsmClass.doLoad;|3:var|17: w,h,i: integer;|17: ps,pb: Pointer;|19: pDWord: pLongInt;|20: fBmp: Kol.PBitmap;|5:begin|38: fStream := ToStreamEvent(PNGStream);|32: if fStream.Size = 0 then Exit;|24: fStream.Position := 0;|23: ps := fStream.Memory;|40: LoadPNG(ps,fStream.Size,pb,w,h,False);|36: fBmp := NewDIBBitmap(w,h,pf32bit);|2: |52: //fBmp.Canvas.Brush.Color := Color2RGB(clBtnFace);|44: //fBmp.Canvas.Brush.BrushStyle := bsSolid;|44: //fBmp.Canvas.FillRect(MakeRect(0,0,w,h));|2: |17: {pDWord := pb; |37: for i := 1 to fBmp.DIBSize div 4 do|7: begin|39: pLongInt(pDWord)^ := Swap(pDWord^);|17: inc(pDWord); |7: end;}|2: |35: ARGB2ABGR(pb,fBmp.DIBSize div 4);|2: |49: // блин фиг догодаешся как такой буфер крутить |50: fBmp.DIBHeader^.bmiHeader.biHeight := -h; //!!! |96: StretchDIBits(fBmp.Canvas.Handle,0,0,w,h,0,0,w,h,pb,fBmp.DIBHeader^,DIB_RGB_COLORS, SRCCOPY); |2: |29: _hi_onEvent(onBitmap,fBmp);|12: fBmp.Free;|4:end;|0:|4:end.|
}

карма: 4

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)