View Full Version : حذف حاشیه دور عکس در ویبی
فاطمه وطن دوست
شنبه 30 شهریور 1387, 19:48 عصر
سلام
فرض کنید یه تصویر تو فرم گذاشتیم ولی میخوایم فقط تصویر نشون داده بشه
پشت زمینه تصویر هم از بین بره و فرم هم transparent بشه چطوری باید این کارو انجام داد ؟
مشکلم از بین بردن بخش های اضافی از عکس هست .
اگرم راه بهتری هست که به ذهن من نرسیده بگید .
http://i38.tinypic.com/2hye72f.jpg
r0ot$harp
شنبه 30 شهریور 1387, 22:37 عصر
سلام
فرض کنید یه تصویر تو فرم گذاشتیم ولی میخوایم فقط تصویر نشون داده بشه
پشت زمینه تصویر هم از بین بره و فرم هم transparent بشه چطوری باید این کارو انجام داد ؟
مشکلم از بین بردن بخش های اضافی از عکس هست .
اگرم راه بهتری هست که به ذهن من نرسیده بگید .
http://i38.tinypic.com/2hye72f.jpg
آره منم همین سوال رو دارم می خوام ببینم چه جوری می شه حاشیه ی عکس زیر که رنگش صورتی هست رو از بین برد ؟
http://i33.tinypic.com/10oir1u.jpg
باتشکر احسان
sohrab o
شنبه 30 شهریور 1387, 23:34 عصر
سلام
فرض کنید یه تصویر تو فرم گذاشتیم ولی میخوایم فقط تصویر نشون داده بشه
پشت زمینه تصویر هم از بین بره و فرم هم transparent بشه چطوری باید این کارو انجام داد ؟
مشکلم از بین بردن بخش های اضافی از عکس هست .
اگرم راه بهتری هست که به ذهن من نرسیده بگید .
http://i38.tinypic.com/2hye72f.jpg
منظورت از transparent اینه که فرم هم بریده بشه؟
sohrab o
شنبه 30 شهریور 1387, 23:40 عصر
این حتما باید بدردت بخوره
اینم فکر کنم بتونه بهت کمک کنه.کار کن اگه متوجه نشدی بگو تا کمکت کنم
r0ot$harp
یک شنبه 31 شهریور 1387, 00:16 صبح
حاجی این کامپونت که در پست http://barnamenevis.org/forum/showpost.php?p=599254&postcount=4 هست به خوبی جواب داد ولی من احتیاج به سورس این کامپونت دارم .
باتشکر احسان
فاطمه وطن دوست
یک شنبه 31 شهریور 1387, 08:09 صبح
سلام
میتونید توضیح بدید کدش چیه؟
ظاهرا فقط تصاویری که رنگ پس زمینشون سفید هست رو خیلی تمیز برش میده .
sohrab o
یک شنبه 31 شهریور 1387, 11:20 صبح
حاجی این کامپونت که در پست http://barnamenevis.org/forum/showpost.php?p=599254&postcount=4 هست به خوبی جواب داد ولی من احتیاج به سورس این کامپونت دارم .
باتشکر احسان
خوب کدشو که من ندارم
sohrab o
یک شنبه 31 شهریور 1387, 11:21 صبح
سلام
میتونید توضیح بدید کدش چیه؟
ظاهرا فقط تصاویری که رنگ پس زمینشون سفید هست رو خیلی تمیز برش میده .
اون آره، اما اگه از دومی استفاده کنی خیلی راحت تره اما فقط رجیستر نیست
Danial_Yousefi
یک شنبه 31 شهریور 1387, 12:42 عصر
ببین این یه دردت می خوره؟؟؟؟
http://barnamenevis.org/forum/showthread.php?t=26932&highlight=colorkey
فاطمه وطن دوست
دوشنبه 01 مهر 1387, 17:02 عصر
سلام
این نمونه واقعا عالیه .
تازه با سورس هم هست !!!
البته فقط برای نمایش تصاویر پی ان جی هست .
http://barnamenevis.org/forum/showpost.php?p=456154&postcount=108
r0ot$harp
دوشنبه 01 مهر 1387, 18:47 عصر
دوستان تا به حال برنامه های زیادی رو دیدین که برای استفاده از Skin از کلی فایل های Bmp یا Png استفاده می کنند .
عکس زیر هم نمونه ای از این دسته عکس ها می باشد .
http://i33.tinypic.com/10oir1u.jpg
من می خوام بدونم چگونه این قمست ها رو Transparent می کنند و هر قسمت رو تیکه تیکه می کنند بگونه ای که تمام حاشیه ی صورتی از بین برود ؟
باتشکر احسان
r0ot$harp
دوشنبه 01 مهر 1387, 19:20 عصر
بالاخره پیداش کردم :
کدهای زیر در Module :
Option Explicit
Private Const RGN_OR As Long = 2
Private Declare Function SetWindowRgn _
Lib "user32" (ByVal hwnd As Long, _
ByVal hRgn As Long, _
ByVal bRedraw As Boolean) As Long
Private Declare Function CreateRectRgn _
Lib "gdi32" (ByVal X1 As Long, _
ByVal Y1 As Long, _
ByVal X2 As Long, _
ByVal Y2 As Long) As Long
Private Declare Function CombineRgn _
Lib "gdi32" (ByVal hDestRgn As Long, _
ByVal hSrcRgn1 As Long, _
ByVal hSrcRgn2 As Long, _
ByVal nCombineMode As Long) As Long
Public Declare Function GetPixel _
Lib "gdi32" (ByVal hdc As Long, _
ByVal x As Long, _
ByVal y As Long) As Long
Private Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As Long
'
Public Function RegionFromImage(fRgnForm As Object, _
picBackground As PictureBox, _
ByVal lBackColor As Long) As Long
Dim hRegion As Long
Dim lpicHeight As Long
Dim lpicWidth As Long
Dim lRow As Long
Dim lCol As Long
Dim lStart As Long
Dim hTempRegion As Long
Dim lResult As Long
hRegion = CreateRectRgn(0, 0, 0, 0)
With picBackground
lpicHeight = .Height / Screen.TwipsPerPixelY
lpicWidth = .Width / Screen.TwipsPerPixelX
For lRow = 0 To lpicHeight - 1
lCol = 0
Do While (lCol < lpicWidth)
Do While (lCol < lpicWidth) And (GetPixel(.hdc, lCol, lRow) = lBackColor)
lCol = lCol + 1
Loop
If (lCol < lpicWidth) Then
lStart = lCol
Do While (lCol < lpicWidth) And (GetPixel(.hdc, lCol, lRow) <> lBackColor)
lCol = lCol + 1
Loop
If (lCol > lpicWidth) Then lCol = lpicWidth
hTempRegion = CreateRectRgn(lStart, lRow, lCol, lRow + 1)
lResult = CombineRgn(hRegion, hRegion, hTempRegion, RGN_OR)
DeleteObject hTempRegion
End If
Loop
Next
End With
RegionFromImage = hRegion
SetWindowRgn fRgnForm.hwnd, hRegion, True
End Function
کدهای زیر هم برای حذف حاشیه :
Private Sub Command1_Click()
RegionFromImage Picture1, Picture1, GetPixel(Picture1.hdc, 0, 0)
MsgBox "Done!"
End Sub
باتشکر احسان
r0ot$harp
دوشنبه 01 مهر 1387, 21:07 عصر
سلام
فرض کنید یه تصویر تو فرم گذاشتیم ولی میخوایم فقط تصویر نشون داده بشه
پشت زمینه تصویر هم از بین بره و فرم هم transparent بشه چطوری باید این کارو انجام داد ؟
مشکلم از بین بردن بخش های اضافی از عکس هست .
اگرم راه بهتری هست که به ذهن من نرسیده بگید .
http://i38.tinypic.com/2hye72f.jpg
خانم وطن دوست فکر می کنم این همون چیزی باشد که شما احتیاج دارین .
http://barnamenevis.org/forum/showpost.php?p=600602&postcount=288
باتشکر احسان
فاطمه وطن دوست
سه شنبه 02 مهر 1387, 07:54 صبح
سلام
چرا تصویری که ترنسپرنت شده وقتی برنامه رو اجرا میکنیم نمایش داده نمیشه ؟
ابزاری که در پست 4# معرفی شده هم تصویر و هم فرم رو ترنسپرنت میکنه .ولی اشکال داره اینکه کار برش رو به خوبی انجام نمیده( خطا داره - مخصوصا اگه تو تصویر ناهمواری باشه) بنابراین برای رفع این مشکل میشه از ابزار معرفی شده در پست های 13# و 10# استفاده کرد . ( ترنسپرنت کردن تصویر بدون هیچ گونه خطائی ) ولی این روشم مشکل داره یا اینکه من دقیقا نمیدونم باید چی کار کنم !!! و مشکل اینجاست که اگه بخوای فرم رو ترنسپرنت کنی با نمونه کدهایی که در سایت گذاشته شده ، هر کنترلی که روی فرم هست هم محو میشن .
برای رفع مشکل( با قرمز مشخص شده ) چی کار باید کرد ؟
sohrab o
سه شنبه 02 مهر 1387, 11:16 صبح
سلام
چرا تصویری که ترنسپرنت شده وقتی برنامه رو اجرا میکنیم نمایش داده نمیشه ؟
ابزاری که در پست 4# معرفی شده هم تصویر و هم فرم رو ترنسپرنت میکنه .ولی اشکال داره اینکه کار برش رو به خوبی انجام نمیده( خطا داره - مخصوصا اگه تو تصویر ناهمواری باشه) بنابراین برای رفع این مشکل میشه از ابزار معرفی شده در پست های 13# و 10# استفاده کرد . ( ترنسپرنت کردن تصویر بدون هیچ گونه خطائی ) ولی این روشم مشکل داره یا اینکه من دقیقا نمیدونم باید چی کار کنم !!! و مشکل اینجاست که اگه بخوای فرم رو ترنسپرنت کنی با نمونه کدهایی که در سایت گذاشته شده ، هر کنترلی که روی فرم هست هم محو میشن .
برای رفع مشکل( با قرمز مشخص شده ) چی کار باید کرد ؟
یه نمونه اکس بزارین اینجا واستون درست کنیم البته دقیق منظورتونو نگرفتم
r0ot$harp
سه شنبه 02 مهر 1387, 13:16 عصر
سلام
چرا تصویری که ترنسپرنت شده وقتی برنامه رو اجرا میکنیم نمایش داده نمیشه ؟
ابزاری که در پست 4# معرفی شده هم تصویر و هم فرم رو ترنسپرنت میکنه .ولی اشکال داره اینکه کار برش رو به خوبی انجام نمیده( خطا داره - مخصوصا اگه تو تصویر ناهمواری باشه) بنابراین برای رفع این مشکل میشه از ابزار معرفی شده در پست های 13# و 10# استفاده کرد . ( ترنسپرنت کردن تصویر بدون هیچ گونه خطائی ) ولی این روشم مشکل داره یا اینکه من دقیقا نمیدونم باید چی کار کنم !!! و مشکل اینجاست که اگه بخوای فرم رو ترنسپرنت کنی با نمونه کدهایی که در سایت گذاشته شده ، هر کنترلی که روی فرم هست هم محو میشن .
برای رفع مشکل( با قرمز مشخص شده ) چی کار باید کرد ؟
خانم وطن دوست لطفا یه نمونه عکس اینجا قرار دهید در ضمن لینک ابزار من اصلاح شد .
یه مشکل کوچیک داشت که حلش کردم .
http://barnamenevis.org/forum/attachment.php?attachmentid=23669&d=1222164937
باتشکر احسان
فاطمه وطن دوست
سه شنبه 02 مهر 1387, 13:26 عصر
سلام
این لینکم کمک بزرگی بود !!!
مشکلم حل شد .
http://barnamenevis.org/forum/showthread.php?t=33917
r0ot$harp
سه شنبه 02 مهر 1387, 13:33 عصر
سلام
این لینکم کمک بزرگی بود !!!
مشکلم حل شد .
http://barnamenevis.org/forum/showthread.php?t=33917
خانم وطن دوست اگر می خواهید خیلی دقیق هم از کد من و هم از کد این آقا استفاده کنید باید عکس رو در یه پروژه جدید در Picturebox1 باز کنید بعد به قمست کد بروید و برای رویداد picturebox1_Mousemove
خط زیر رو بنویسید .
Private Sub Picture1_MouseMove(Button As Integer, _
Shift As Integer, _
X As Single, _
Y As Single)
Me.Caption = Picture1.Point(X, Y)
End Sub
و بعد موس رو رویه ناحیه ی حاشیه بکشین و در این زمان عددی در قسمت کپشن فرم نوشته می شود اون عدد رو جایه MaskColor کنترل من و یا جایه تکه کد زیر قرار دهید :
SetLayeredWindowAttributes Me.hWnd, &HFF00FF, 0, LWA_COLORKEY
باتشکر احسان
noorsoft
سه شنبه 02 مهر 1387, 17:23 عصر
فایلی که گذاشتین ویروس داره
r0ot$harp
چهارشنبه 03 مهر 1387, 03:21 صبح
سلام
این نمونه چطوره ؟
ولی بهترین روش برای ساخت اسکین هست . هرموضوعی که دوست دارین میتونین طراحی
کنید و بعد به صورت یه اسکین درش بیارین.
________________________***********_______________ _________
http://i38.tinypic.com/huf6nm.jpg
:::::::::::::::::::::::::::::::::::::::::::::::::: :::::::::::::::::::::::
البته ابزار png in vb رو هم از لینک زیر دریافت کنید.
http://barnamenevis.org/forum/showpost.php?p=456154&postcount=108
خانم وطن دوست اگر شما دنبال طراحی اسکین هستید که این رو من عرض کنم هیچ وقت عکس های تشکیل دهنده اسکین چند لایه رنگ نیست منظورم حاشیه ی عکس ها هست .
یا بیشتر که بگم 99% صورتی و 1 درصد هم مشکی هست .
عکسی که شما گذاشتید هزار رنگ داره .
در ضمن دوباره 99 درصد عکس های اسکین ها با پسوند BMP هستند .
باتشکر احسان
فاطمه وطن دوست
چهارشنبه 03 مهر 1387, 09:14 صبح
سلام
ویروس داشت !!!!
http://i37.tinypic.com/zt6a6d.jpg
http://i37.tinypic.com/hx2lts.jpg
ماهان مقدم
جمعه 10 آبان 1387, 20:16 عصر
دوستان چرا لقمه رو دور سرتون 50 و 60 بار میچرخونین !. شما میخوا قسمت Background عکست از تصویر حذف بشه ! اول از ایمکه باید تصویرتو بذاری تو PictureBox بعدش هم از BitBlt در عرض سه سوت میشه استفاده کرد !. البته خاصیت AutoRedraw پیکچرباکس باید True باشه. یه سورس میزارم برین بگیرین.
این سورس مرحله به مرحله استفاده از BitBlt رو نشون میده.
http://rapidshare.com/files/159387916/bitBlt.zip.html
vbhamed
جمعه 10 آبان 1387, 23:51 عصر
سلام
از كنترل Sheridan ActiveThreed استفاده كنيد، تمام مشكلات شما رو حل مي كنه
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.