גלילת מסך

  • פותח הנושא BMWE
  • פורסם בתאריך

BMWE

New member
גלילת מסך

לילה טוב! אני רוצה לעשות גלילת מסך מצאתי שניתן לעשות זאת ע"י memmove/movedata. הבעיה שזה לא עובד לי. (לצערי אני צריך להשתמש בקומפיילר פרימיטיבי)
#include <stdio.h> #include <conio.h> #include <graph.h> #include <string.h> #include <time.h> #include <stdlib.h> #include <stddef.h> void main(void) { unsigned char far *screen; short i; char buffer [80]; _clearscreen( _GCLEARSCREEN ); _settextcolor( 15 ); for (i=0; i<25;i++) { _setbkcolor(i%8); sprintf(buffer, "Back: %d Fore:\n", i ); _outtext( buffer ); } screen=0xB800; // movedata(0xB800, 322, 0xB800, 162, 3194); // srcseg srcoff destseg destoff count memmove(screen+322, screen+162 , 3194); }​
משום מה, זה לא עובד לי. יש למישהו הצעות?
 

codec

New member
הקוד בהערה

מה זה כן עושה?? הקוד שלך שבהערה דווקא יותר בכיוון: B800 הוא הסגמנט של זיכרון המסך (ב-TEXT). כמה הערות: 1) עדיף לעבוד עם double-buffer. 2) מה שאתה עושה יקפיץ את הטקסט שורה למעלה כל פעם. אם אתה רוצה תזוזה חלקה של המסך, זה כבר יותר מסובך.
 

BMWE

New member
זהו זה בידידיוק מה שאני צריך

שהטקסט יקפוץ פעם אחת מעלה. double-buffer=?
 

codec

New member
דאבל

הכוונה היא, שלא תעבוד כל הזמן מול הזיכרון של המסך. תיצור לך "תמונה" של המסך במקום אחר בזיכרון, ותעשה עליה מה שבא לך (כתיבה, מחיקה, הזזות). בכל פעם שסיימת, רק תעתיק אותה ל-b800:0. זה ייראה הרבה יותר טוב.
 
למעלה