PDA

View Full Version : سوال: تبديل متن به عكس در vb.net



milad5843
جمعه 01 آبان 1388, 12:33 عصر
با سلام

دوستان من برنامه اى دارم مى نويسم كه نياز دارم يه جمله رو كه توى textbox نوشته شده تبديل بكنم به يه picture سياه و سفيد با اندازه مثلا ۸*۳۲ pixel بد هر pixelesh كه سفيد هست را صفر بگيرم و هر كدوم كه سياه 1.

ممنون ميشم راهنمايى كنيد ، من vb.نت كار ميكنم و برنامه vs2008.

با تشكر.

alimanam
شنبه 02 آبان 1388, 01:40 صبح
با سلام

فکر کنم این نمونه کد مشکلت رو حل میکنه . یا علی
http://img23.imageshack.us/img23/6508/34444k.gif

milad5843
شنبه 02 آبان 1388, 10:19 صبح
خيلى على بود ، خدا خیرت بده !

حالا همين image كه توليد ميشه رو بايد برنامه بياد نقاط سياه رو ۱ در نظر بگيره و نقاط سفيد رو ۰ و ستون به ستون بريزه توى يه سرى array ، واسه اون هم راهنمايى كنيد لطفا .

alimanam
شنبه 02 آبان 1388, 12:39 عصر
با سلام

دوست عزیز من , شما هم یکم به خودت زحمت بده علی ماشاا... سورس و منبع در اینترنت موجوده که میتونین باهاش مشکلتون رو حل کنین اگه میخوای یه برنامه نویس خوب بشی زیاد مطالعه کن زیاد سرچ کن و در نهایت اگه مشکلت حل نشد سوال کن همین که به یه مشکل جدید رسیدی زود ناامید نشو . البته من حقیرکوچکتر از اون هستم که کسی رو نصیحت کنم . اگه با کارایی که گفتم نتونستی مشکل رو حل کنی من و دوستان دیگه در خدمتیم . یا علی

milad5843
یک شنبه 03 آبان 1388, 10:26 صبح
خوب اره ! حق با شماست ، من كلا يه هفته است كه vb.نت ياد گرفتم ، واسه همين سنگينِه برنامه نويسى برام هنوز.

پس هر سوالى داشتم از خودت ميپرسم ها !!

سوال اول : تو همين برنامه كه دادى من fontdialog گذشتم ، ميخوام از اون طريق كاربر خودش fonto عوض كُنه ، ولى نميدونم چه جورى وقتى فونت عوض ميشه اعمالش كنم به textbox.

سوال دومى : من يه سرى آراىه دارم و از savedialog هم استفاده كردم تو فرم ، حالا ميخوام اونا رو توى text ام خط به خط save كنم ، چى كار بايد بكنم ؟!

alimanam
دوشنبه 04 آبان 1388, 00:01 صبح
با سلام

سوال اولت که واضح بود در فایل ضمیمه میتونی کدش رو ببینی سوال دومت خیلی مبهمه بیشتر توضیح بده . یا علی
http://img101.imageshack.us/img101/4086/11232.png

milad5843
دوشنبه 04 آبان 1388, 00:19 صبح
با سلام
نميدونم چرا بعضى وقتها كه فونت عوض ميشه تو picturebox اعمال نميشه ، به هر حال...

ببين من بايد دوتا حلقۀ تو در تو for بنويسم با دستورِ getpixel فكر كنم.
مثكه اين دستورِ نشون دهندهِ رنگ اون axie كه از برنامه اى كه شما گذاشتين توليد ميشه ، بد عددِ رنگ هر pixel در مياد، حالا اون adada رو من نسبت ميدم به يه آراىه ، مثلا ۸*۳۲ هستش یعنی 8 تا ستون داريم ، كه codesh ميشه يه هم چين چيزى : &hF6 حالا اينا رو ميدم به آراىه ها و آراىه ها بايد خط به خط بره توى text و save بشه .

الان مشكل سر اينه كه چه جورى آراىه ها جمع ميشن تو text؟ من فقط قسمت savedialog رو بلدم.

shask00l
دوشنبه 04 آبان 1388, 01:13 صبح
دوست عزیز
برای اون دوتا حلقه ای که گفتی ... باید به تعداد سطر و ستون تصویرت باشه با getpixel یا فرمانی شبیه به این باید pixel هارو بخونی و توی یه آرایه با همین سایز بصورت boolean ذخیره کنی . بعد این آرایه رو بصورت باینری با کمک یک stream توی فایل بنویسی . در مورد stream ها هم به اندازه ی کافی توی این سایت بحث شده .

امیدوارم که منظورت رو درست متوجه شده باشم .

alimanam
دوشنبه 04 آبان 1388, 02:56 صبح
با سلام

این هم رنگ تک تک پیکسل های تصویر بقیه اش رو سعی کن خودت ..... یا علی

http://img10.imageshack.us/img10/6757/1112222222222.png

milad5843
چهارشنبه 06 آبان 1388, 01:10 صبح
سلام داش چطورى ؟!

امروز با كوله بارى از سؤالات اومدم ، اما قبلش نرم افزاریو كه دارم طراحى ميكنم ببين ، اين نرم افزار بايد بتونه كدِ هاى hexe تابلو روانی كه ساختم رو توليد بكنه.

پيشنهادى انتقادى چيزى دارى بده.

اما سؤالات :
1-من ميخوام textbox هايى كه ميبينى محدود بشه ، یعنی مثلا فقط بشه توش ۱۰ حرف نوشت ، و جلوش هم بزنِ فرضا : "۶ characters left"

2-يه مشكلِ بزرگ تو برنامه اى كه دادى بهم اينه كه اگه picturi كه توليد ميشه توى realese رو بزرگش كنى ميبينى عكس كامل سياه نيست ، یعنی طیف هاى مختلفى توش هست ، ولى من سياه خالص ميخوام.

3-icon اى كه كاربر روش كليك ميكنه كه برنامه باز شه رو چه جورى بايد عوضِش كنم ؟

4-قسمت وارد كردن تصاوير و نگاه ، ميخوام عكس كه وارد شد توى textboxesh آدرسِ ورودی بياد

5-ميخوام يه عكس متحرکه "gif" فرضا با ۳ تا frame ، تبديل بشه به يه عكسِ bitmap كه سه تا frame رو توى خودش درِ ، یعنی به ترتيب از چپ به راست اوايلِ frame ۱ هستش بد بدونِ فاصله frame ۲ هست و بعدش ۳ كه قاعدتاَ طول عكس ۳ برابر ميشه.

6-من اين codi كه پائين میبینیو نوشتم كه يه text رو كه مينويسه user تبديل بشه به 7ta عكس بغلِ هم (7ta عكس تو يه عكس ميخوام باشه نه اينكه ۷ تا فايل توليد بشه) با point هاى مختلف ولى متاسفانه فقط مورد آخرى save ميشم ، چى كارش بايد بكنم ؟





Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click

Dim Text As String = TextBox4.Text 'tayin mikonad ke ma neveshte mikhahim
Dim FontColor As Color = Color.Black 'range neveshteye ax
Dim BackColor As Color = Color.White 'range bg ax
Dim FontName As String = "tahoma" 'font ax
Dim FontSize As Integer = andaze(4) 'size fonte ax
Dim Height As Integer = 8 'arze ax be pixel
Dim Width As Integer = 256 'toole ax be pixel
Dim objBitmap As New Bitmap(Width, Height) 'moteghayerist ke sizash width o height ast
Dim objGraphics As Graphics = Graphics.FromImage(objBitmap)
Dim objColor As New Color
Dim objFont As New Font(FontName, FontSize)
Dim objBrushForeColor As New SolidBrush(FontColor)
Dim objBrushBackColor As New SolidBrush(BackColor)
Dim x As Integer


For y(4) = -7 To 0
Select Case y(4)
Case -7 : x = 0
Case -6 : x = 32
Case -5 : x = 64
Case -4 : x = 96
Case -3 : x = 128
Case -2 : x = 160
Case -1 : x = 192
Case 0 : x = 224
End Select
Dim objPoint As New PointF(x, y(4))



objGraphics.FillRectangle(objBrushBackColor, 0, 0, Width, Height)
objGraphics.DrawString(Text, objFont, objBrushForeColor, objPoint)
Next
objBitmap.Save(Application.StartupPath & "\step4" & ".bmp", ImageFormat.Bmp)

End Sub



خيلى ممنون ميشم حتى اگه حال داشته باشى سوالارو بخونى چه برسه به جواب !!

shask00l
چهارشنبه 06 آبان 1388, 17:25 عصر
خسته نباشيد دوست عزيز
پيشنهاد ميكنم قبل از پست كردن سوالات قوانين سايت رو مطالعه كنيد .
براي اينكه سريعتر به جوابتون برسيد هر سوال رو در يك تاپيك مجزا مطرح كنيد .



1-من ميخوام textbox هايى كه ميبينى محدود بشه ، یعنی مثلا فقط بشه توش ۱۰ حرف نوشت ، و جلوش هم بزنِ فرضا : "۶ characters left"


اين كار رو قبل از اينكه متن رو به تصوير تبديل كنيد بايد انجام بديد . با كمك توابع رشته اي متن رو به قسمتهايي كه دوست داريد تقسيم كنيد



2-يه مشكلِ بزرگ تو برنامه اى كه دادى بهم اينه كه اگه picturi كه توليد ميشه توى realese رو بزرگش كنى ميبينى عكس كامل سياه نيست ، یعنی طیف هاى مختلفى توش هست ، ولى من سياه خالص ميخوام.


براي تغيير فرمت عكس (سياه و سفيد كردن عكس) توابع آماده اي وجود داره البته خودتون هم ميتونيد بنويسيد . زياد سخت نيست . كلا براي كار روي تصوير ميتونيد از codeproject مثال هاي خوبي پيدا كنيد.



3-icon اى كه كاربر روش كليك ميكنه كه برنامه باز شه رو چه جورى بايد عوضِش كنم ؟


:افسرده: به پنجره ي project properties سري بزنيد . دلش براتون تنگ شده .



4-قسمت وارد كردن تصاوير و نگاه ، ميخوام عكس كه وارد شد توى textboxesh آدرسِ ورودی بياد


اين سوالتون خيلي نا مفهوم بود .



5-ميخوام يه عكس متحرکه "gif" فرضا با ۳ تا frame ، تبديل بشه به يه عكسِ bitmap كه سه تا frame رو توى خودش درِ ، یعنی به ترتيب از چپ به راست اوايلِ frame ۱ هستش بد بدونِ فاصله frame ۲ هست و بعدش ۳ كه قاعدتاَ طول عكس ۳ برابر ميشه.


داستان تصاوير متحرك gif كلا با تصاوير استاتيك فرق ميكنه . براي كار با اين تصاوير هم پيشنهاد ميكنم از ابزار هاي آماده استفاده كنيد .

موفق باشيد

milad5843
چهارشنبه 06 آبان 1388, 18:31 عصر
خسته نباشيد دوست عزيز
پيشنهاد ميكنم ......

دوستِ عزيز ممنون بابتِ جواب ولى با كمالِ احترام فقط جواب سوال سوم رو شما دادين.

در مورد سوال اول :
اصلا من كارى به تبديل و اينا ندارم ، فقط ميخوام تو textbox فقط و فقط بشه مثلا ۱۰ حرف نوشت.

در مورد سوال دوم :
merC !! قاعدتاَ تو اينترنت ميشه مثال هاى خوبى پيدا كرد !!!!!!!!!!!!!!

در مورد سوال سوم :
عالى بود ، كمك خوبى كرديد .

در مورد سوال چهارم :
من ميخوام عكسى كه user با يه button وارد ميكنه ، تو textbox آدرسش نوشته بشه ، یعنی بنویسه مثلا : c:/01.jpg

و در مورد سوال پنجم :
خوب اينكه بايد از يه ابزارى استفاده كنم كه واضحِه !!! از چه دستورى ، چه شیئ آخه .....؟

shask00l
چهارشنبه 06 آبان 1388, 22:40 عصر
در مورد سوال اول :
اصلا من كارى به تبديل و اينا ندارم ، فقط ميخوام تو textbox فقط و فقط بشه مثلا ۱۰ حرف نوشت.

اگر منظورتون توی همون textbox که متن اولیه رو وارد میکنید هستش با کمک رویداد keydown میتونید تعداد کاراکتر های وارد شده رو در هر لحظه کنترل کنید .فکر میکنم پروپرتی هم در این زمینه وجود داشته باشه .

اما اگر منظورتون متنیه که قراره به تصویر تبدیل بشه با کمک توابع left , right میتونید به راحتی هر تعداد کاراکتر که دوست دارید از رشته جدا کنید . قبلا گفته بودم .



در مورد سوال دوم :
merC !! قاعدتاَ تو اينترنت ميشه مثال هاى خوبى پيدا كرد !!!!!!!!!!!!!!


در مورد این سوال باید عرض کنم که منم چیزی در این مورد نمیدونستم ولی همونطور که شما گفتید توی اینترنت مثال های خوبی پیدا میشه . من هم search کردم .


http://www.codeproject.com/KB/graphics/quickgrayscale.aspx
http://www.codeproject.com/KB/graphics/pjaimage.aspx




در مورد سوال سوم :
عالى بود ، كمك خوبى كرديد .


خواهش میکنم قابلی نداشت :خجالت:



در مورد سوال چهارم :
من ميخوام عكسى كه user با يه button وارد ميكنه ، تو textbox آدرسش نوشته بشه ، یعنی بنویسه مثلا : c:/01.jpg

من برنامتون رو کاملا بررسی نکردم ولی فکر کنم با openfiledialog فایل رو انتخاب میکنید . اگر اینطور باشه خود دایالوگ مسیر و نام فایل رو بصورت دو تا پروپرتی در اختیارتون قرار میده .
در غیر این صورت هم ........... :متفکر: خلاصه برنامه شما تصویر رو با کمک مسیرش بار گذاری میکنه . ببینید کجا این کار انجام میشه . بعد از همون جا مقدار textbox مربوطه رو set کنید .


و در مورد سوال پنجم :
خوب اينكه بايد از يه ابزارى استفاده كنم كه واضحِه !!! از چه دستورى ، چه شیئ آخه .....؟


یه نگاه به لینک زیر بندازین . (گوگل و codeproject دوستان خوبی هستند . قدرشونو بدونید)


http://www.codeproject.com/info/search.aspx?artkw=animated+gif

ضمنا .. اگر شوخ طبعیه من باعث ناراحتیتون شد . عذر خواهی میکنم .

milad5843
پنج شنبه 07 آبان 1388, 12:17 عصر
نه داش ، اين حرفها چيه .

آقا كسى نيست جواب دقيق ترى به سوال ها بده ؟

alimanam kojayiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii

milad5843
جمعه 08 آبان 1388, 13:01 عصر
سلام داش چطورى ؟!

امروز با كوله بارى از سؤالات اومدم ، اما قبلش نرم افزاریو كه دارم طراحى ميكنم ببين ، اين نرم افزار بايد بتونه كدِ هاى hexe تابلو روانی كه ساختم رو توليد بكنه.

پيشنهادى انتقادى چيزى دارى بده.

اما سؤالات :
1-من ميخوام textbox هايى كه ميبينى محدود بشه ، یعنی مثلا فقط بشه توش ۱۰ حرف نوشت ، و جلوش هم بزنِ فرضا : "۶ characters left"

2-يه مشكلِ بزرگ تو برنامه اى كه دادى بهم اينه كه اگه picturi كه توليد ميشه توى realese رو بزرگش كنى ميبينى عكس كامل سياه نيست ، یعنی طیف هاى مختلفى توش هست ، ولى من سياه خالص ميخوام.

3-icon اى كه كاربر روش كليك ميكنه كه برنامه باز شه رو چه جورى بايد عوضِش كنم ؟

4-قسمت وارد كردن تصاوير و نگاه ، ميخوام عكس كه وارد شد توى textboxesh آدرسِ ورودی بياد

5-ميخوام يه عكس متحرکه "gif" فرضا با ۳ تا frame ، تبديل بشه به يه عكسِ bitmap كه سه تا frame رو توى خودش درِ ، یعنی به ترتيب از چپ به راست اوايلِ frame ۱ هستش بد بدونِ فاصله frame ۲ هست و بعدش ۳ كه قاعدتاَ طول عكس ۳ برابر ميشه.

6-من اين codi كه پائين میبینیو نوشتم كه يه text رو كه مينويسه user تبديل بشه به 7ta عكس بغلِ هم (7ta عكس تو يه عكس ميخوام باشه نه اينكه ۷ تا فايل توليد بشه) با point هاى مختلف ولى متاسفانه فقط مورد آخرى save ميشم ، چى كارش بايد بكنم ؟





Private Sub Button10_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button10.Click

Dim Text As String = TextBox4.Text 'tayin mikonad ke ma neveshte mikhahim
Dim FontColor As Color = Color.Black 'range neveshteye ax
Dim BackColor As Color = Color.White 'range bg ax
Dim FontName As String = "tahoma" 'font ax
Dim FontSize As Integer = andaze(4) 'size fonte ax
Dim Height As Integer = 8 'arze ax be pixel
Dim Width As Integer = 256 'toole ax be pixel
Dim objBitmap As New Bitmap(Width, Height) 'moteghayerist ke sizash width o height ast
Dim objGraphics As Graphics = Graphics.FromImage(objBitmap)
Dim objColor As New Color
Dim objFont As New Font(FontName, FontSize)
Dim objBrushForeColor As New SolidBrush(FontColor)
Dim objBrushBackColor As New SolidBrush(BackColor)
Dim x As Integer


For y(4) = -7 To 0
Select Case y(4)
Case -7 : x = 0
Case -6 : x = 32
Case -5 : x = 64
Case -4 : x = 96
Case -3 : x = 128
Case -2 : x = 160
Case -1 : x = 192
Case 0 : x = 224
End Select
Dim objPoint As New PointF(x, y(4))



objGraphics.FillRectangle(objBrushBackColor, 0, 0, Width, Height)
objGraphics.DrawString(Text, objFont, objBrushForeColor, objPoint)
Next
objBitmap.Save(Application.StartupPath & "\step4" & ".bmp", ImageFormat.Bmp)

End Sub



خيلى ممنون ميشم حتى اگه حال داشته باشى سوالارو بخونى چه برسه به جواب !!
لطفا کمک کنید !!

alimanam
یک شنبه 17 آبان 1388, 11:53 صبح
با سلام

درابتدا معذرت خواهی بابت اینکه نمی تونستم به سایت سربزنم ( مشکلات شغلی )

دوست عزیز انگار به حرف های من زیاد توجه نکردی خداوکیلی چنددقیقه وقت صرف کردی تا سوالات رو آماده کنی و چنددقیقه صرف حل سوالات مبتدی وساده ایی که پرسیدی کردی ؟؟؟

جواب سوال اول :

درویژگیهای کنترل Textbox دنبال ویژگی MaxCharacter یا MaxLenghtبگرد و عدد مورد نظرت رو وارد کن( من سرکار VS نصب شده نداشتم )

سوال دوم :

کاملاً متجه نشدم اگه منظورت اینکه که نمی خوای هیچگونه پیکسلی به غیر از سیاه و سفید در عکست پیاده بشه از متد SetPixcel آبجکت Bitmap میتونی استفاده کنی .

سوال سوم : که دوست عزیز جواب دادن

سوال چهارم :

از کد زیر استفاده کن یه دکمه برای لود عکس روی فرم بزار و در رویداد کلیک اون از کد زیر استفاده کن البته من چون vs نداشتم تا اونجایی که حافظه ام اجازه میداد کد نویسی کردم خودت چکش کن .

Dim ofd as new openfiledialog
ofd.filter = "Bitmap|*.bmp;Jpeg|*.jpg"
if ofd.showdialog = system.windows.forms.dialogresult.OK Then
Textbox1.Text = ofd.filename
End if

جواب سوالهای 5- 6 رو هم وقت بزار ( بیشتر از چند ثانیه لطفاً اگه نتونستی و اگه زنده بودم بار بعدی که اومدم نت ( شاید یکم طولانی بشه ببخشید چون واقعاً سرم شلوغه ) تا جایی که تونستم کمکت می کنم البته اساتید محترم هم کمکت می کنن .

موفق باشید . یا علی

milad5843
دوشنبه 18 آبان 1388, 02:26 صبح
دوست عزیز انگار به حرف های من زیاد توجه نکردی خداوکیلی چنددقیقه وقت صرف کردی تا سوالات رو آماده کنی و چنددقیقه صرف حل سوالات مبتدی وساده ایی که پرسیدی کردی ؟؟؟



سلام ، خيلى ممنون از وقتى كه ميذارى.

من رشته ام الكترونيك بوده و يه ۳ واحدى برنامه نویسی "c" پاس كرديم ، من basic رو هم از روى ميكرو بلدم تازه ، يه ماهه پيش در عرضِ يك هفته يه كتاب vb.نت رو خوندم ، ميگى چى كار كنم ديگه ؟!!

الان بيشتر مشكلم سوال دوم هستش ، من setpixel رو تست كردم ولى اون چيزى كه من ميخوام نيست ، من میخوام عکسی كه توليد ميشه تك بيتى باشه يعنى يا سياه باشه پیکسلاش يا سفيد . مثلا اون برنامه اى كه شما گذشتى و من بسطش دادم عكسى كه توليد ميكنه اين عکسیه كه پائين ميبينى ، اگه از ماكزيمم zoom استفاده كنى ميبينى كه عكس پیکسلاش سياه نيست ، از رنگ هاى مختلفى تشكيل شده .

sanaz yousefi
سه شنبه 26 آبان 1388, 07:59 صبح
سلام من سورس بازی منچ vb.net می خواستم عجله دارم لطفا کمکم کنید ممنون