برای نوشتن متن در 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 یک مکان متنی دارد. این مکان نسبت به ابتدای نمایشگر می باشد. این موقعیت توسط توابع متنی برای نمایش کاراکتر های بعدی مورد استفاده قرار میگیرد. به صورت پیش فرض ای موقعیت (۰و۰) می باشد که گوشه سمت بالا و چپ نمایشگر می باشد. وقتی که از ویندوز منیجر استفاده میکنید این موقعیت مطابق پنجره ی جدید مورد استفاده قرار میگیرد. برای تنظیم کردن موقعیت متن ار توابع GUI_GotoX() ، GUI_GotoY() و GUI_GotoXY() می توان استفاده کرد.