Jump to content

Arka Planı Gizleme


milano88
 Share

Recommended Posts

merhaba arkadaşlar öncelikle soruyu belirtmeden detaylı bilgiyi aldığım linki veriyorum
[code]http://msdn.microsoft.com/en-us/magazine/ee819134.aspx[/code]
günlerdir,gecelerdir bu fonksiyonun çözümünü bulmaya çalışıyorum ams şeffaf veya gölge efektli bir png ile projeyi açmayı desteklemiyor henüz bunu yapmak içinde winapiler üzerine bir fonsksiyon yazılması gerektiğini okudum ve yukarıdaki linkten'de biraz bilgiler edinerek bir fonksiyon yazmaya çalıştım fakat yarım yamalak çalıştı ve bunu düzeltmemde yardımcı olabilecek birilerini arıyorum.
olay şu şekilde yani normalde ams arkaplanı gizlenemez winapi plugini gizliyor ama oda tüm projeye şeffaflık veriyor buda anlamsız kalıyor amacım photoshopta yaptığım tasarımı olduğu gibi amsye atarak o şekilde açılmasını sağlamak yazdığım fonksiyonun ile bunu yapmayı başardım fakat pngdeki şefflığa ve gölgelendirmeye birtürlü müdahele edemedim umarım anlatabilmişimdir birkaç örnek resim veriyorum :

NORMALDE AMS BU ŞEKİLDE AÇILIR:
[img]http://e1204.hizliresim.com/w/l/4l6gq.png[/img]

YAZDIĞIM FONKSİYON İLE ARKAYI GİZLEDİM VE BU HALİ ALDI:
[img]http://e1204.hizliresim.com/w/l/4l6gx.png[/img]

ASIL ÇÖZEMEDİĞİM OLAY İSE BURDA NORMALDE GÖZÜKMEYEN ARKA PLAN PNG Yİ PROJEYE ATINCA BU HALİ ALIYOR:
[img]http://e1204.hizliresim.com/w/l/4l6h8.png[/img]

BUDA PHOTOSHOPTA DENEMEK İÇİN HAZIRLADIM ORİJİNAL PNG:
[img]http://d1204.hizliresim.com/w/l/4l6hj.png[/img]

YAZDIĞIM FONKSİYON GLOBAL :
[code]function SetLayeredWindowAttributes(hwnd, Color)
local al = tonumber(DLL.CallFunction("user32.dll", "GetWindowLongA", hwnd..", -20", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL)) + 524288
result = DLL.CallFunction("user32.dll", "SetWindowLongA", hwnd..", -20, "..al, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
DLL.CallFunction("user32.dll", "SetLayeredWindowAttributes", hwnd..", "..Color..", 0, 1", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
end[/code]

ON SHOW :
[code]SetLayeredWindowAttributes(Application.GetWndHandle(), Math.RGBToNumber(255, 0, 255))[/code]
buradaki 255,0,255 arka plan rengim yazni gizledim renk oluyor

BUDA PROJE DOSYASI:
[code]http://s2.dosya.tc/server12/BvwJJM/MyProject.rar.html[/code]

Yardım edebilecek arkadaşlar en başta olan linlteki konuyu incelesin lütfen eğer çözüme ulaşırsa herkez istediği imaj ile projesini açıp daha görsel ve profesyönel programlar yapabilir umarım çözülür :)

[b]NOT:[/b] 8.0.8.0 sürümünde ams bu tip efektleri desteleyecekmiş diye okudum ama başka bir yetkili arkadaşta boşuna bekliyoruz diye yazmıştı soruma bu yüzden işi garantiye almak istedim bu yüzden sorunun çözümünü arıyorum.

Edited by milano88
Link to comment
Share on other sites

[center][b]projen böyle değilde belki buna yakın olabilir
photoshopda kaydederken bmp olarak kaydedersin[/b]

[spoiler][img]http://i.imgur.com/UwNTD.png[/img][/spoiler]

[spoiler][img]http://i.imgur.com/XzrzW.png[/img][/spoiler]

[b]icon craft ile açıp işaretlediğim gibi şeffaf seçip etrafını istediğin gibi temizler ve tekrar bmp olarak kaydedip bmp olarak kullanırsan bu hali alır
ama ben tam temizleyenedim belki sen daha iyisini yaparsın iyi çalışmalar[/b]

[spoiler][img]http://i.imgur.com/aSMWi.png[/img][/spoiler][/center]

Link to comment
Share on other sites

aynı işe geliyor MeHMeTBeN :) normalde zaten ams mask var onunla bunu yapabilirsiniz gölgelendirme ve pngdeki şeffaflık gidince anlamı kalmıyor iconcrafta ne hacet photoshopta 32bit bmp mask ile bile denedim yani normal windows dialoglarında çalışan maskeleme amsde çalışmıyor neden? çünki desteklemiyor :) yani windows start orbu düşünün arkası siyah olur ama uygulayınca gözükmez maskelemeden dolayı fakat bu tip maskelemeleri ams desteklemiyor henüz bu yüzden gereksiz kalıyo bu işlemler kısacası grafik maskeleme adına herşeyi daha önce denedim zaten onları geçtim zaten asıl mesele şu winapilerde programlama dili bilen biri yukarıda linkte verdiğim sayfayı biraz inceleyip çözebilir sanırım

normalde bakın şunu örnek olarak maskeledim
[img]http://d1204.hizliresim.com/w/l/4l7j1.jpg[/img]
ilk bakışta birşeye benzemeyen bu imaj herhangi bir windows dialoğuna uyguladığınız zaman aşadaki görüntüyü alacaktır
[img]http://d1204.hizliresim.com/w/l/4l7jc.png[/img]
ama dediğim gibi bunları ams desteklemiyor bu yüzden winapilerde bitiyo iş :(

Edited by milano88
Link to comment
Share on other sites

arkadaşım günaydın
proje dosyanı mediafireye upoad edermisin aklıma bi fikir geldide denemek istiyorum


not: sanırım başardım:))

[img]http://d1204.hizliresim.com/w/l/4l7l6.jpg[/img]


bu mudur?

Edited by kedice
Link to comment
Share on other sites

http://www.mediafire.com/?f69vunm43z57r39

öyle değil yanlış anladınız olayı yaa :D o png varya projeyi çalıştırdığınızda sadece o olacak ekranda ok :D bende diyorum nası başardı diye :D örnek resim verim açıldığında şu şekil açılması lazım sizin yaptığınız zaten pngyi projeye sürükle bırak olayı :D

[img]http://d1204.hizliresim.com/w/l/4l7md.png[/img]

ben buradaki windows framelerinide gizliycem ve sadece o png kalacak olay bu :) hani rainmeter varya onu düşünün onun gibi ;)

Edited by milano88
Link to comment
Share on other sites

tamam şimdi anladım. bmp değilde png ile olur dedim sonra butona çevirdim. buton olarak projene atınca arka fonu altına aldı haliyle pembe.
peki dedim burayı maskeliyeyim bu seferde tamamen görünmez oldu.
maske değilde arka fona düz beyaz renk atayayım dedim buseferde senin istediğin gibi olmadı
[img]http://d1204.hizliresim.com/w/l/4l7pj.jpg[/img]
2-3 sene evvel u3 modifiyesi yaptığımda defalarca denemiştim. sorunu çözemedim. ama arka fona güzel bi iş yaptırarak gayet güzel projeler çıkarılabilir. (tamam istediğin gibi olmuyor ama) mesela şeffaf png nin çerçevesine hizalı bir jpg fon ile gayet başarılı bi efect verilir.

Link to comment
Share on other sites

pardon hocam düzenledim bir ifade konuya mühür vurdurdu ya kusura bakmayın.
[b]@kedice[/b] hadi şeffaflığıda geçtim diyelim gölgelendirme yapıncada sorun veriyor ?
şimdi bakın şöyle düşünmeniz lazım bir proje yaptınız ve bunu normal standart windows teması ile açtırıyorsunuz normalde windows 7 de ayrı xp de açılır vss bu projenin tasarımını bozar yaptığınız projenin tamamen kendinize ait bir tasaram olmasını istemezmisiniz mesela ben yaptığım playerde bunlara dikkat ettim amsden veya windowstan açılan herhangi bir eklenti kullanmadım
[img]http://g1204.hizliresim.com/w/l/4l7t1.png[/img]
şimdi gidipte bunu standart stilde kullansam berabt olur win7 de birtürlü xpde birtürlü açılır diğimi
sonuç bakın ne oluyor
[img]http://g1204.hizliresim.com/w/l/4l7ts.png[/img]

Edited by milano88
Link to comment
Share on other sites

gölge içinde şöle yapmıştım ben. birkere çerçeveye blur verirsen arka fonda sorun çıkıyo ayarlaması çok zor
kesikin köşeli bi yazı için keskin köşeli siyah arka fon yaparsın. biraz kaydırırsın olur ama yine şeffaf olan png nin altında siyah fon kalması gerekiyor kısacası çok uğraştırıyor ben başarılı olamadım çok ama çok uğraştım. u3 modifiyesindede aynı sorunlarla karşılaştım sonunda şöyle bişi çıkmıştı ortaya

[img]http://fc07.deviantart.net/fs71/f/2010/042/b/7/u3_modifiye_by_kediceblog.jpg[/img]

Edited by kedice
Link to comment
Share on other sites

gölgelendirmeyi ben yine yaparım ama az bir efekt veriyor microsoftta biraz araştırma yaparak onuda halletim ama buda faydasız isteyen olursa kullanabilir

[code]hWnd = Application.GetWndHandle();
nExisitngStyle = DLL.CallFunction("User32.dll", "GetClassLongA", hWnd..",-26", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);

nNewStyle = nExisitngStyle+131072;
DLL.CallFunction("User32.dll", "SetClassLongA", hWnd..",-26,"..nNewStyle, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);[/code]

Link to comment
Share on other sites

Merhaba milano88 abi şimdi ben konu açtım.

[quote]http://www.tnctr.com/topic/199857-autoplay-media-studioda-saydamlyk/[/quote]

Şöyle bişey mi düşünüyordun hala ne istediğini çözemedim tam olarak özür dilerim ..

[img]http://i.imgur.com/AFID7.png[/img]

Senin yaptığın biçimde yap abi sonra transparent plugini ile istediğin öğene uygula bu olayı ben bunu anladım ona göre yanıt veriyorum abi :)

Edited by HalilYanar
Link to comment
Share on other sites

  • Editor

Arkaplan rengini default yap

bu kodu uygula on show a

[code]SetLayeredWindowAttributes(Application.GetWndHandle(), Math.RGBToNumber(236, 233, 216))[/code]

pencereyide flat yap.

veya rgb kodlarını değiştir arkaplan rengine göre.

Edited by pairs
Link to comment
Share on other sites

:) onu zaten ilk başta yaptım ben yukarıdada açıkladım ne alaka şimdi :) pngyi atınca sorun veriyor zaten png projede olunca arka planı tam gizlemiyor efektlerden dolayı

[b]EDIT:[/b] amsenin altını üstüne getirdim ve olayı çözdüm arkadaşlar kodlarıda veriyorum buyrun faydalanın :

[b]NOT:[/b] [b]Math.RGBToNumber[/b] yanındaki RGB değerlerini kendi arkaplanınıza göre değiştireceksiniz ;) bu kodları yazdıktan sonra artık mask falan kullanmanıza gerek yok direk istediğiniz imajı projeye sürekleyin bırak bukadar....

[b]Global:[/b]
[code]hWnd = Application.GetWndHandle();
nTransparentColor = Math.RGBToNumber(255, 0, 255);
nOpacity = 255;
nMode = 3;


function SetTransparentOpacityWindow()
GWL_EXSTYLE = -20;
WS_EX_LAYERED = 524288;
msg = DLL.CallFunction(_SystemFolder.."\\user32.dll", "GetWindowLongA", hWnd..","..GWL_EXSTYLE, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
msg = msg + WS_EX_LAYERED;
DLL.CallFunction(_SystemFolder.."\\user32.dll", "SetWindowLongA", hWnd..","..GWL_EXSTYLE..","..msg, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
DLL.CallFunction(_SystemFolder.."\\user32.dll", "SetLayeredWindowAttributes", hWnd..","..nTransparentColor..","..nOpacity..","..nMode, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
end


function ChangeTransparentOpacityWindow()
DLL.CallFunction(_SystemFolder.."\\user32.dll", "SetLayeredWindowAttributes", hWnd..","..nTransparentColor..","..nOpacity..","..nMode, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
end[/code]

[b]Actions Startup:[/b]

[code]hWnd = Application.GetWndHandle();
nTransparentColor = Math.RGBToNumber(255, 0, 255);
nOpacity = 0;
nMode = 3;
SetTransparentOpacityWindow();[/code]

[b]On Preload :[/b]

[code]hWnd = Application.GetWndHandle();
nTransparentColor = Math.RGBToNumber(255, 0, 255);
nOpacity = 200;
nMode = 3; [/code]

[b]On Show :[/b]

[code]hWnd = Application.GetWndHandle();
nTransparentColor = Math.RGBToNumber(255, 0, 255);
nOpacity = 0;
nMode =1;
ChangeTransparentOpacityWindow(); [/code] Edited by milano88
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...