امتیاز موضوع:
  • 3 رأی - میانگین امتیازات: 3.67
  • 1
  • 2
  • 3
  • 4
  • 5
برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
نویسنده پیام
alirezalahij آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 27
( 2 تشکر در 1 ارسال )
ارسال: #1
Exclamation  برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
سلام
من به یه برنامه احتیاج دارم که عکس سیاه و سفید( به اندازه 32*64) رو به پیکسل تبدیل کنه تا بتونم بفهمم کدوم نقاط روشن و خاموش هستن
یا
چه طور می شه یه متن گرفته شده رو یه این عکس تبدیل کرد.

[تصویر:  2s6rqja.gif]

ممنون
۲۳-مهر-۱۳۸۷, ۱۶:۵۱:۵۷
ارسال‌ها
پاسخ
تشکر شده توسط : alimarashi
alirezalahij آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 27
( 2 تشکر در 1 ارسال )
ارسال: #2
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
کسی الگویی نداره چه طور متن و به پیکسل تبدیل کنم
۲۴-مهر-۱۳۸۷, ۰۲:۵۳:۲۸
ارسال‌ها
پاسخ
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #3
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
خيلي ساده بود کدنويسيش.
خوراکش فونت با سايز بزرگه و مرگش توي کار با سازهاي کوچيکه.
البته اگه طول و عرض پيکسل ها رو هم کم کني کيفيت خيلي بالا ميره ولي کمتر از 4 نمي تونن باشن.
بعضي جاهاي کد از H-1 يا W-1 استفاده کردم. براي منطبق شدن لبه Shpae ها رو هم ديگه اين کار رو کردم در غير اينصورت لبه هاشون کنار هم قرار مي گرفتند نه روي هم.
عکس اول سايز فونتش 72 هستش (خيلي کوچيکه) ولي چون پيکسل هاش 4 در 4 هستند خوب اومده.
عکس دوم پيکسل هاش 7 در 7 هستند ولي چون سايز فونتش 120 هستش (خيلي بزرگ) بازم جبران شده و خوب اومده.

[تصویر:  315zork.jpg]


فایل‌(های) پیوست شده
.zip   TextToPoint.zip (اندازه: 34.89 KB / تعداد دفعات دریافت: 1,061)


(آخرین ویرایش در این ارسال: ۲۴-مهر-۱۳۸۷, ۰۸:۴۶:۰۷، توسط mojtabamalaekeh.)
۲۴-مهر-۱۳۸۷, ۰۸:۴۲:۳۳
ارسال‌ها
پاسخ
تشکر شده توسط : Di Di, alirezalahij, lord_viper, hamed_Arfaee, Payman62, HoseinVig, mahdivbNET, shapour, makh000f, daniyal_1363, alimarashi, aKaReZa75, constantine470
alirezalahij آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 27
( 2 تشکر در 1 ارسال )
ارسال: #4
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
سلام مجتبي جون

آقا تو كه كارت عالي بود يه مردونگي كن اين برنامه رو توضيح بده
مثلا اين get pixel چه كار مي كنه
اگه خط به خط باشه كه عاليه(شرمنده)

Option Explicit

Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal X As Long, ByVal Y As Long) As Long

Private Sub Command1_Click()
Dim X As Integer, Y As Integer, Index As Integer
Dim Blank As Long
Picture1.Cls
Blank = GetPixel(Picture1.hdc, 0, 0)
Picture1.CurrentX = (Picture1.ScaleWidth - Picture1.TextWidth(Text1)) \ 2
Picture1.CurrentY = (Picture1.ScaleHeight - Picture1.TextHeight(Text1)) \ 2
Picture1.Print Text1
For Index = 1 To shp.UBound
X = shp(Index).Left + shp(Index).Width \ 2
Y = shp(Index).Top + shp(Index).Height \ 2
If GetPixel(Picture1.hdc, X, Y) <> Blank Then
shp(Index).FillColor = vbRed
Else
shp(Index).FillColor = Blank
End If
Next
Picture1.Cls
End Sub

Private Sub Form_Load()
Dim Row As Long, Col As Long
Dim vLeft As Integer, vTop As Integer
Dim Cols As Long, Rows As Long
Dim Index As Long
Const W = 7
Const H = 7
Picture1.ScaleMode = vbPixels
Picture1.AutoRedraw = True
Rows = Picture1.ScaleHeight \ (H - 1)
Cols = Picture1.ScaleWidth \ (W - 1)
shp(0).Visible = False
shp(0).FillStyle = 0
vLeft = 0
vTop = 0
For Row = 1 To Rows
For Col = 1 To Cols
Index = (Row - 1) * Cols + Col
Load shp(Index)
shp(Index).Move vLeft, vTop, W, H
shp(Index).Visible = True
vLeft = vLeft + W - 1
Next
vLeft = 0
vTop = vTop + H - 1
Next
End Sub
۲۴-مهر-۱۳۸۷, ۱۳:۰۵:۱۸
ارسال‌ها
پاسخ
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #5
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
GetPixel اسمش معلومه. رنگ یک نقطه از یک بستر رو برمیگردونه.
بستر به زبون ساده صفحه ای هست که توش نقاشی می کنیم. منظور از نقاشی کشیدن اشکال هندسی، رسم تصویر، رنگ کردن و ...
مختصات اون نقطه از بستر هم با پارامتر دوم و سوم مشخص میشن.
فرض کن روی یه صفحه یه متن نوشتی.
کد:
Picture1.Print Text1
برای اینکه متنت وسط صفحه ظاهر بشه این کار رو می کنی:
کد:
Picture1.CurrentX = (Picture1.ScaleWidth - Picture1.TextWidth(Text1)) \ 2    Picture1.CurrentY = (Picture1.ScaleHeight - Picture1.TextHeight(Text1)) \ 2
صفحه رو با تعدادی سکه فرش می کنی.
کد:
Form_Load
تک تک سکه ها رو باید کنترل کنی.
کد:
For Index = 1 To shp.UBound
هر سکه ای که رو که برداشتی و دیدی که زیرش رنگیه اون سکه رو میذاری سر جاش بمونه ولی هر سکه ای که زیرش رنگی نبود اونو دور میندازی. ما بجای دورانداختن سکه ها اونا رو با رنگ زمینه صفحه (Blank) محو می کنیم. و سکه هایی رو هم که باید بمونن با یه رنگ دیگه مثلا قرمز (vbRed) مشخص می کنیم.
کد:
If GetPixel(Picture1.hdc, X, Y) <> Blank Then
        shp(Index).FillColor = vbRed
Else
        shp(Index).FillColor = Blank
End If
حالا از کجا بفهمیم زیر سکه رنگ خورده یا نه؟
زمانی که صفحت خالیه (Picture1.Cls) ببین یه نقطه از صفحه چه رنگه؟ هر نقطه ای بود خوبه.
کد:
Blank = GetPixel(Picture1.hdc, 0, 0)
در آخر سکه های باقی مونده مثل همون متنی میشن که نوشتی.
حالا میتونی متن رو از رو صفحه پاک کنی چون چیدمان سکه های باقی مونده نشون دهنده همون متنه و دیگه نیازی به متن نوشته شده نداری.
کد:
Picture1.Cls
نکته: ممکنه موقع کنترل کردن سکه ها به یه سکه بر بخوری که زیرش فقط یکم رنگی باشه یعنی تمام مساحت زیرش رنگ نخورده؛ فقط قسمتی از اون رنگیه.
پس شما نقطه مرکز هر سکه رو در نظر می گیری که اگه رنگی بود سکه بمونه و اگه نه اونو دور بندازی.
کد:
X = shp(Index).Left + shp(Index).Width \ 2
Y = shp(Index).Top + shp(Index).Height \ 2
GetPixel(Picture1.hdc, X, Y)
نقل قول: اگه خط به خط باشه كه عاليه
وقتش رو هم که داشته باشم هنرش رو ندارم. این کار یه معلمه. هنر آموزش و انتقال مطلب یه چیز خاصه!


۲۵-مهر-۱۳۸۷, ۰۳:۱۵:۴۹
ارسال‌ها
پاسخ
تشکر شده توسط : lord_viper, alirezalahij, hamed_Arfaee, t3r!p3000, HoseinVig, EleRam, alikamali, daniyal_1363, unforgiven
alirezalahij آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 27
( 2 تشکر در 1 ارسال )
ارسال: #6
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
سلام

یه سوال

الان (پيکسل هاش 7 در 7 )
چه طور می تونم بفهمم کدوم دایره روشنه کدوم خاموشه
۳۰-مهر-۱۳۸۷, ۰۰:۵۷:۱۲
ارسال‌ها
پاسخ
alirezalahij آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 27
( 2 تشکر در 1 ارسال )
ارسال: #7
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
سلام آقا مجتبی

بابا تو دیگه کی هستی
2 روز دارم برنامه رو می خونم تا فهمیدم و درکش کردم


خیلی عالی نوشتی
الگوریتم عالی بود


راستی می شه منم راهنمایی کنی چطور به گرافیک vb مسلط یشم
مثلا همین image, print , getpixel,biteltو.............

کتابی منبعی و .........
ممنوننتم
(آخرین ویرایش در این ارسال: ۳۰-مهر-۱۳۸۷, ۰۳:۳۰:۲۸، توسط alirezalahij.)
۳۰-مهر-۱۳۸۷, ۰۳:۲۸:۱۳
ارسال‌ها
پاسخ
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #8
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
چند نکته در ویژوال بیسیک
1ـ همیشه خاصیت ScaleMode در شیء Form و PictureBox را برابر VBPixels قرار دهید تا محاسبات بر حسب پیکسل باشند ولی برای کار با طول عرض فرم و مانیتور مجبورید از Twips استفاده کنید که اگر تقسیم بر 15 بشه به پیکسل تبدیل میشه. اما این عدد 15 از کجا میاد؟ Screen. TwipsPerPixelX و Screen. TwipsPerPixelY رو مشاهده کنید.
2ـ فضای قابل استفاده در Form و PictureBox با طول و عرض Form یا PictureBox فرق می کنه. باید از ScaleWidth و ScaleHieght استفاده کنید.
مثال: می خواهیم عرض PictureBox برابر 10 پیکسل باشد تا یک عکس با عرض 10 داخلش Load کنیم:
کد:
Picture1.Width = Picture1.Width – Picture1.ScaleWidth + 10
مقدار Picture1.Width – Picture1.ScaleWidth در واقع اندازه ی قاب دور PictureBox است که اگر BorderStyle = 0 باشد قاب دور آبجکت هم صفر میشه.
3ـ برای گرفتن رنگ پیکسل بجای Point از تابع GetPixel استفاده کنید. و برای مقدار دادن به یک پیکسل بجای PSet از تابع SetPixelV استفاده کنید. سرعت تابع SetPixelV از تابع SetPixel بیشتر است.
4ـ اگر خاصیت AutoRedraw آبجکت True باشد بعد از استفاده از SetPixel یا SetPixelV باید Refresh کنید.
5ـ اگر خاصیت AutoRedraw برابر False باشد با رخ دادن رویداد Paint آبجکت، نقاشی ها و رنگ های روی آبجکت از بین می روند. برای جلوگیری از پاک شدن چیزهایی که با متدهای گرافیکی رسم کرده اید این خاصیت را برابر True قرار دهید.
6ـ برای پیمایش عکس از صفر تا عرض عکس منهای 1 و از صفر تا ارتفاع عکس منهای 1، پیکسل ها را می خوانیم. چون اولین پیکسل دارای موقعیت 0, 0 و آخرین پیکسل دارای موقعیت ScaleWidth – 1, ScaleHeight – 1 است.
آخرین و مهمترین نکته اینه که من به گرافیک VB مسلط نیستم ولی همینهایی که بلدم از دوستان توی انجمن و از Sample های API-Guide یاد گرفتم. کتابی هم سراغ ندارم چون جز کتاب هنرستان و آموزش گام به گام ویژال بیسیک دیگه هیچ کتابی استفاده نکردم.
مهمترین منبع API-Guide هستش و اگه جایی گیر کردی تو انجمن های برنامه نویسی مثل همینجا میتونی مطرح کنی. جستجوی Google و Yahoo و ... رو هم فراموش نکن.


نقل قول: چه طور می تونم بفهمم کدوم دایره روشنه کدوم خاموشه

[تصویر:  IranBoardXY.jpg]

تو تصویر زیر مربع ها رو پیکسل فرض کن (هر چند که خیلی بزرگ هستند)
به علاوه های زرد رنگ رو هم برای نشون دادن مرکز دایره ها رو گذاشتم
دایره شماره 1 مرکزش رنگیه پس باید روشن بشه. اما چطور مختصات مرکز رو بدست بیاریم.
مختصات وسط هرچیزی میشه عرضش تقسیم بر 2
یعنی اگه عرض دایره 10 پیکسل باشه وسطش میشه 5
اما فاصله دایره از کناره صفحه رو هم باید به این مقدار اضافه کنی که با خط دوسر فلش دار سفید مشخص شده.

دایره 3 هم همینطور

اما دایرهای 2 و 4 با اینکه قسمتی از مساحتشون رنگی شده ولی نباید روشن بشن چون ما مختصات مرکز رو ملاک گرفتیم و اگر مرکز دایره ای رنگی بود باید روشن بشه.


(آخرین ویرایش در این ارسال: ۳۰-مهر-۱۳۸۷, ۰۹:۱۱:۵۷، توسط mojtabamalaekeh.)
۳۰-مهر-۱۳۸۷, ۰۸:۱۸:۰۱
ارسال‌ها
پاسخ
تشکر شده توسط : alirezalahij, lord_viper, amirjan, t3r!p3000, microware, HOSSEIN1357
alirezalahij آفلاین
تازه وارد

ارسال‌ها: 13
موضوع‌ها: 1
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 27
( 2 تشکر در 1 ارسال )
ارسال: #9
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
خیلی خیلی ممنون

این hdc تو تابع getpixel یعنی چی ؟
مثلا:

GetPixel(Picture1.hdc, X, Y)
۳۰-مهر-۱۳۸۷, ۱۶:۵۸:۵۸
ارسال‌ها
پاسخ
dreamvbfox آفلاین
در حال پیشرفت
***

ارسال‌ها: 426
موضوع‌ها: 44
تاریخ عضویت: مرداد ۱۳۸۷

تشکرها : 236
( 1251 تشکر در 361 ارسال )
ارسال: #10
Exclamation  RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
خوب حالا اگر خواسته باشیم با یه فونت و سایز دیگه تبدیل کنیم باید چی کار کنیم .

ممنون

Biggrin Use Google instead of asking stupid questions Biggrin

[/url]
CMC Automation System


آموزش زبان c++
[url=http://www.iranled.com/forum/thread-13923.html]

۳۰-مهر-۱۳۸۷, ۲۳:۳۷:۴۸
وب سایت ارسال‌ها
پاسخ
mojtabamalaekeh آفلاین
کاربر با تجربه
****

ارسال‌ها: 566
موضوع‌ها: 104
تاریخ عضویت: آذر ۱۳۸۶

تشکرها : 1378
( 631 تشکر در 223 ارسال )
ارسال: #11
RE: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
(۳۰-مهر-۱۳۸۷, ۱۶:۵۸:۵۸)alirezalahij نوشته است: خیلی خیلی ممنون

این hdc تو تابع getpixel یعنی چی ؟
مثلا:

GetPixel(Picture1.hdc, X, Y)
hdc بستر شیء ماست که تصاویر و متدهای نقاشی روی اون رسم میشن. اگر شیئی hdc نداشته باشه نمیشه با متدهای گرافیکی چیزی روش رسم کنیم.
(۳۰-مهر-۱۳۸۷, ۲۳:۳۷:۴۸)dreamvbfox نوشته است: خوب حالا اگر خواسته باشیم با یه فونت و سایز دیگه تبدیل کنیم باید چی کار کنیم .

ممنون
فونت PictureBox رو عوض کن.
وقتی از Picture1.TextWidth و Picture1.TextHeight استفاده کردم یعنی اینکه محاسبات بر حسب اندازه ی فونت Picture1 انجام میشن.


۰۱-آبان-۱۳۸۷, ۰۱:۰۸:۱۷
ارسال‌ها
پاسخ
تشکر شده توسط : alirezalahij, dreamvbfox, t3r!p3000


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
Shy [فوری] خواندن فایل تکست و تبدیل آن به فایل اکسل توسط CommandButton ahmadelectron 1 3,530 ۰۵-خرداد-۱۳۹۴, ۱۶:۵۲:۲۷
آخرین ارسال: Ghoghnus
  تبدیل کلمه به کد اسکی karbon2010 3 11,654 ۲۵-اردیبهشت-۱۳۹۳, ۱۵:۱۰:۰۹
آخرین ارسال: Ghoghnus
  تبدیل pdf به html و سپس به word automa 3 3,031 ۱۹-اردیبهشت-۱۳۹۳, ۱۷:۳۸:۵۷
آخرین ارسال: automa
  نیاز به دستور برای اجرای چکر برنامه Proxifier از طریق cmd hamidsystem 4 4,085 ۰۸-فروردین-۱۳۹۳, ۱۶:۱۳:۰۱
آخرین ارسال: hamidsystem
  تبدیل کد به یونیکد فارسی aleas 4 5,220 ۱۱-اسفند-۱۳۹۲, ۱۱:۱۶:۴۸
آخرین ارسال: aleas
  آموزش ساخت ستاپ برای برنامه Iron_Fist 48 58,427 ۲۵-دى-۱۳۹۲, ۱۵:۲۶:۳۴
آخرین ارسال: javad917
  آموزش دکمه ورو برای برنامه های تحت ویژوال بیسیک ovimez 5 5,790 ۲۶-آذر-۱۳۹۲, ۰۰:۳۲:۴۸
آخرین ارسال: Ghoghnus
  ممیزی که با تغییر فونت به ویرگول تبدیل میشه! :-| mabus 3 4,697 ۲۰-شهریور-۱۳۹۲, ۱۰:۴۹:۴۰
آخرین ارسال: mabus
  تبدیل 10 عبارت به 1 عبارت توسط vb6 hamalous 27 20,362 ۰۵-شهریور-۱۳۹۲, ۱۴:۰۸:۴۶
آخرین ارسال: hamalous
  ساخت ستاپ جاسوسی برای برنامه های وی بی RAMA2009 20 15,277 ۲۹-اردیبهشت-۱۳۹۲, ۱۸:۱۵:۵۰
آخرین ارسال: A.P-H@ck3r

پرش به انجمن:


کاربرانِ درحال بازدید از این موضوع: 2 مهمان

صفحه‌ی تماس | IranVig | بازگشت به بالا | | بایگانی | پیوند سایتی RSS