PDA

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 استفاده كنيد، تمام مشكلات شما رو حل مي كنه