آموزش نمایش text در emWin جلسه اول

emWin
پیکره بندی emwin
آوریل 3, 2016
آموزش text در emwin جلسه دوم
می 29, 2016

برای نوشتن متن در emwin کار خیلی ساده است. با شناخت چندین روتین شما می توانید هر تکستی رو در هر جای نمایشگر و با هر فونتی نمایش بدید.

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

روال عمومی

ما فقط با فراخوانی تابع GUI_DispString()  میتوانیم تکست نمایش دهیم. برای مثال

GUI_DispString(“Hello world!”);

کد بالا ، تکست “Hello world!” را در موقعیت متن فعلی نمایش خواهد داد. با این حال توابعی برای نمایش متن با فونت های مختلف و موقعیت های خاص وجود دارند. حتی زمانیکه از نمایشگرهای byte-oriented استفاده می کنید محل موقعیت متن را، در پیکسل خاصی می توان مشخص کرد. علاوه بر آن امکان نمایش اعداد در مبناهای دسیمال ، هگزادسیمال و باینری وجود دارد.

کاراکترهای کنترل

کاراکترها با کد کمتر از ۳۲ ، کاراکترهای کنترلی هستند. کاراکترهای کنترلی به عنوان بخشی از ASCII تعریف شده اند. emWin تمامی آنها را به جز کاراکتر های زیر نادیده می گیرد

کد کاراکتری کد اسکی c شرح
۱۰ LF \n تغذیه کردن خط (اضافه کردن خط)

موقعیت متن جاری به ابتدای خط بعدی تغییر میکند

به صورت پیش فرض X=0 می باشد

و Y+=فاصله ی فونت ها با پیکسل.(که با تابع GUI_GetFontDistY() مشخص می شود).

۱۳ CR \r سر خط رفتن.

موقعیت متن جاری به ابتدای همان خط منتقل می شود.

به صورت پیش فرض X=0  .

 

استفاده از  LF(اضافه کردن خط) برای نمایش رشته ها بسیار مناسب است. به طوریکه با فراخوانی یک تابع ، می توان چندین خط متن نمایش داد.

 

مد های ترسیم

متن ها با رنگ هایی که با توابع GUI_SetColor(), GUI_SetBkColor() در پس زمینه و زمینه تنظیم میشوند ، به نمایش در می آیند. به منظور طراحی یک رشته و یا تک کاراکتر حالت خاص میتوان از تابع GUI_SetTextMode() ، با حالت های زیر استفاده کرد.

متن نرمال

نمایش متن به صورت نرمال پیش فرض می باشد. کاراکترها با رنگ زمینه نمایش داده می شوند. رنگ پس زمینه به منظور پاک کردن زمینه با آن رنگ به اندازه ی طول و ارتفاع فونت انتخاب شده می باشد.

متن فقط توسط مشخصه ی GUI_TM_NORMAL و یا ۰ به صورت نرمال نمایش داده می­شود.

متن معکوس

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

متن ترنسپارنت

متن فقط توسط مشخصه ی GUI_TM_TRANS به صورت ترنسپارنت نمایش داده میشود. در این حالت کاراکتر ها بدون پس زمینه و با رنگ زمینه به نمایش در می آیند. در این مد هر چیزی که قبلاً کشیده شده بود در پس زمینه دیده می شود.

 

متن XOR

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

این مد هم یک حالت از ترنسارنت میباشد بنابر این پس زمینه بدون تغییر باقی می ماند. در این مد برای اطمینان از خوانایی پیکسل به پیکسل تنظیمات انجام میشود ، بنابر این مشکی به رنگ سفید و برعکس تبدیل میشود. رنگ ها در این مد توسط رابطه ی زیر بدست می آید :

New pixel color = number of colors – actual pixel color – 1

 

متن معکوس ترنسپارنت

متن در این مد فقط با مشخصه ی (GUI_TM_TRANS | GUI_TM_REV). نمایش داده میشود. برطبق مد ترنسپارنت ، پس زمینه پاک نمیشود. و بر طبق مد معکوس کاراکتر ها با رنگ پس زمینه به نمایش در می آیند.

 

مثال

نمایش به صورت نرمال ، ترنسپارنت ، معکوس ، XOR و ترنسپارنت معکوس :

GUI_SetFont(&GUI_Font8x16);
GUI_SetBkColor(GUI_BLUE);
GUI_Clear();
GUI_SetPenSize(10);
GUI_SetColor(GUI_RED);
GUI_DrawLine(80, 10, 240, 90);
GUI_DrawLine(80, 90, 240, 10);
GUI_SetBkColor(GUI_BLACK);
GUI_SetColor(GUI_WHITE);
GUI_SetTextMode(GUI_TM_NORMAL);
GUI_DispStringHCenterAt("GUI_TM_NORMAL" , 160, 10);
GUI_SetTextMode(GUI_TM_REV);
GUI_DispStringHCenterAt("GUI_TM_REV" , 160, 26);
GUI_SetTextMode(GUI_TM_TRANS);
GUI_DispStringHCenterAt("GUI_TM_TRANS" , 160, 42);
GUI_SetTextMode(GUI_TM_XOR);
GUI_DispStringHCenterAt("GUI_TM_XOR" , 160, 58);
GUI_SetTextMode(GUI_TM_TRANS | GUI_TM_REV);
GUI_DispStringHCenterAt("GUI_TM_TRANS | GUI_TM_REV", 160, 74);

اسکرین شات از مثال بالا :

emwin

موقعیت مکانی متن

همه ی توابع در emWin یک مکان متنی دارد. این مکان نسبت به ابتدای نمایشگر می باشد. این موقعیت توسط  توابع متنی برای نمایش کاراکتر های بعدی مورد استفاده قرار میگیرد. به صورت پیش فرض ای موقعیت (۰و۰) می باشد که گوشه سمت بالا و چپ نمایشگر می باشد. وقتی که از ویندوز منیجر استفاده میکنید این موقعیت مطابق پنجره ی جدید مورد استفاده قرار میگیرد. برای تنظیم کردن موقعیت متن ار توابع GUI_GotoX() ، GUI_GotoY() و GUI_GotoXY() می توان استفاده کرد.

حسین
حسین
من 28 سال سن دارم و رشته ی تحصیلی ام مهندسی برق قدرت بوده علاوه بر برق علاقمند به دنیای الکترونیک ، برنامه نویسی و طراحی وب هستم . این سایت رو برای آموزش رابط گرافیکی emWin راه اندازی کردم که بدون کمک شما جلو رفتن غیر ممکنه پس اگه آموزش یا مطالب مرتبطی دارید برام ایمیل کنید تا به اسم خودتون توی سایت منتشر بشه. hosseintomari@gmail.com
اشتراک
اطلاع از
guest

0 نظرات
بازخورد داخلی
مشاهده همه نظرات
0
برای بهبود مطالب، لطفاً نظر بدهید.x