ايران ويج

نسخه‌ی کامل: برنامه برای تابلو روان(تبدیل عکس به پیکسل) یا تبدیل متن به پیکسل
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
صفحه‌ها: 1 2 3 4
سلام

من می خوام دایره هایی رو که رو شن شده رو تشخیص بدم

مثلا یه فایل text درست کنم شروع کنم از دایره اول اگه خاموش بود اولین حرف فایل فایل متنیم صفر بشه اگه روشن بود توش یک بنویسم و همین طور تا مقدار آخرین دایره رو توش ذخیره کنم

این کارو چه طور باید انجام بدم؟
این کار دو راه داره.
راه اول اینه که دکمه Draw رو بزنی تا دایره ها رنگهای مورد نظر رو به خودشون بگیرن و بعد رنگ هر دایره رو تو فایل ذخیره کنی.
راه دوم اینه که همون الگوریتم اصلی (رنگ کردن دایره ها) رو اجرا کنی ولی به جای اینکه تعیین کنی دایره رنگ بشه یا رنگ نشه، تعیین کنی که توی فایل صفر ذخیره بشه یا یک.

این فایل ضمیمه امکان ذخیره و بازیابی تو فایل رو داره.

راستی DC مخفف Device Context به معنی بستر دستگاه و اون h اولش فکر کنم مخفف Handle به معنای دستگیره باشه. دستگیره ها تو ویندوز اعداد منحصر به فردی هستند که بوسیله اونها میتونیم یه کارایی کنیم. بد نیست دوستانی که در باره Handle و DC اطلاعاتی دارند بگن تا ما هم استفاده کنیم.
سلام .

مجتبی جان . یه سوال دیگه . اگر خواسته باشم این 0 یا 1 ها رو ستون به ستون سیو کنم باید چه جوری کار کنم !!!؟!؟!؟!


ممنون از کمکت.
حلقه اول از صفر تا عرض صفحه (همون Picture1) منهای یک میره و حلقه داخلی از صفر تا ارتفاع صفحه منهای یک. یعنی جای SacaleWidth و ScaleHeight توی حلقه ها باید عوض بشه.
سلام

خیلی خیلی ممنون
عالی شده


من برای اینکه تو هر خط فقط میخوام 8 تا دونه از 0و1 ها رو ذخیره کنم چی کارباید کنم؟
سلام .

اگر خواستم رو shp ها کلیک کنم و رنگ اونا رو عوض کنم باید چه دستوری بنویسم ؟

رویداد کلیک نداره؟
نقل قول: من برای اینکه تو هر خط فقط میخوام 8 تا دونه از 0و1 ها رو ذخیره کنم چی کارباید کنم؟
یعنی چی؟
کلا میخوای توی صفحه هر سطرت 8 ستون داشته باشه؟ اینجوری که کیفیت خیلی پایین میاد. سؤالت رو بیشتر شرح بده.
تابلوهای روان یادم نیست ابعادشون چند بود ولی یه عدد 96 تو کار بود فکر کنم. مثلا 16*6 . کسی اگه میدونه بگه.

نقل قول: اگر خواستم رو shp ها کلیک کنم و رنگ اونا رو عوض کنم باید چه دستوری بنویسم ؟

رویداد کلیک نداره؟
رویداد کلیک نداره. آخه آبجکت نیستند که. نقاشی هستند و فقط رنگ اون قسمت از فرم رو که روش قرار گرفتن، تغییر میدن.
نقل قول: چه دستوری بنویسم
دو راه داره. کمی صبر کنی کدش رو میذارم.

نقل قول: بد نیست دوستانی که در باره Handle و DC اطلاعاتی دارند بگن تا ما هم استفاده کنیم.
چه انجمن خواب آلودی. کسی نیست جواب ما رو بده. از اینجا میرم تا چند وقت دیگه. تو این انجمن یه زمانی اینقدر جواب میگرفتم که همش در حال تقدیر و تشکر از اساتید بودم ولی الان همه رفتن تو بخش آزاد فعالیت می کنن.
کد:
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim Counter As Integer, Index As Integer
    For Counter = 1 To shp.UBound
        If X > shp(Counter).Left And X < (shp(Counter).Left + shp(Counter).Width) And Y > shp(Counter).Top And Y < (shp(Counter).Top + shp(Counter).Height) Then
            Index = Counter
            Exit For
        End If
    Next
    If shp(Index).FillColor = vbRed Then shp(Index).FillColor = vbButtonFace Else shp(Index).FillColor = vbRed
End Sub
این راه اول درکش راحت تره ولی رو Shape آخر کلیک کنی حلقه باید تا آخره بره و سرعت برنامه پایین میاد (هر چند که محسوس نیست ولی ما میگیم حلقه هر چی طولانی تر باشه سرعت برنامه پایین میاد)

تو روش دوم باید طول و عرض دایره ها رو داشته باشیم. پس متغیرهای W و H رو به بخش General منقل می کنیم.
کد:
Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
    Dim Row As Long, Col As Long
    Dim Rows As Long, Cols As Long
    Dim Index As Long
    Rows = Picture1.ScaleHeight \ (H - 1)
    Cols = Picture1.ScaleWidth \ (W - 1)
    Col = X \ (W - 1)
    Row = Y \ (H - 1)
    If X Mod (W - 1) > 0 Then Col = Col + 1
    If Y Mod (H - 1) > 0 Then Row = Row + 1
    Index = (Row - 1) * Cols + Col
    If shp(Index).FillColor = vbRed Then shp(Index).FillColor = vbButtonFace Else shp(Index).FillColor = vbRed
End Sub
به این دو تا خط توجه کنید:
کد:
Col = X \ (W - 1)
Row = Y \ (H - 1)
از (W-1) و (H-1) استفاده شده چون لبه Shape ها روی هم هستند و کنار هم نیستند.
حالا این دو تا خط:
کد:
If X Mod (W - 1) > 0 Then Col = Col + 1
If Y Mod (H - 1) > 0 Then Row = Row + 1
در آخر مقادیر به اضافه یک شدند. چرا؟
فرض کنید ارتفاع دایره ها 10 پیکسل باشه (H=10)
وقتی که Y ماوس 10 باشه ما تو سطر اول هستیم. تقسیم صحیح 10 بر 10 میشه یک (همون چیزی که انتظار میرفت). اما اگه Y کمتر از 10 بود مثلا 6، اونوقت تقسیم صحیح 10 بر 6 میشد صفر (یک واحد کمتر از چیزی که انتظار میرفت)
باقیمانده تقسیم 10 بر 10 میشه صفر و سطر درست محاسبه میشه
باقیمانده تقسیم 6 بر 10 میشه 6 و سطر یکی کمتر مقدار مورد نظر محاسبه میشه
نتیجه: زمانی که باقیمانده بزرگتر از صفر باشه باید یکی به حاصل اضافه کنیم.
راه دوم خیلی بهتره. هر چندتا دایره که داشته باشی با همین چند خط کد مکانش پیدا میشه
مجتبی دستت درد نکنه . واقعا توضیحاتت عالی بود.

یه چند تا کار دیگه باید رو این برنامه انجام بشه .

مثلا :
1- طول و عرض picture1 باید اندازه متن (Text1.text) باشه !
2- وقتی داری shp ها رو ایجاد می کنی باید تو یه اندازه مشخص از عکس قرار بگیره . یعنی باید طول و عرض تابلو رو وارد کنن . که معمولا ارتفاع تابلو باید 16 یا 32 و .. باشه و طول هم بستگی به اندازه متن هست!

ببینم picture1.textwidth و picture1.textheight اندازه متن هست ؟؟ بر حسب پیکسل یا بر حسب اشکال ؟ (7*7)

یه راهنمایی بکنی ممنون می شم . تشکر
سلام

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

راستی چه طور می شه همه دیتا ها رو بر عکس کرد





بعد یه سوال دیگه؟
آیا می شه تو این برنامه یه دستور از برنامه دیگه رو اجرا کرد؟
برای کامپایل کردن برنامه می گم

مثلا این برنامه کل برنامه رو برای میکرو درست کنه
می خوام این برنامه تولید شده رو تو کامیلر وارد بشه و کامپایل انجام بشه
راستی

چطور می شه وقتی یه عکس رو وارد PICTURE BOX کردیم

اون عکس به اندازه PICTURE BOX دربیاد

من AUTOSZIE زدم اما PICTUREBOX به اندازه تصویر من در اومد

ممنون
این image خاصیت strech داره اما picturebox نداره
اما image متد cls رو نداره


چطور picturebox رو strech کنم

ممنون
سلام

من می خوام تو خط اول فایل تکستی که درست می کنم
بنویسم data:

بعد از خط دوم تو هر خط فقط 8 تا دونه از 0 و 1 ها نوشته بشن

ممنون
سلام آقا مجتبی سحر خیز
صبح ت بخیر

من یرنامه با اجازتون یکم تغییر دادم ببین موقع حرکت هی شکل متن عوض می شه
صفحه‌ها: 1 2 3 4