Autor Thema: Bildschirmbereiche kopieren  (Gelesen 5892 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

Offline Count

  • Benutzer
  • Beiträge: 227
Bildschirmbereiche kopieren
« am: Fr 06.02.2009, 18:03:42 »
Hallo zusammen,
wer kann mir verraten, wie ich in C einen Bildschirmbereich von einer Stelle an eine andere kopieren kann?

Vielen Dank im Voraus!
Oliver

afalc060

  • Gast
Re: Bildschirmbereiche kopieren
« Antwort #1 am: Fr 06.02.2009, 18:21:43 »

Offline Count

  • Benutzer
  • Beiträge: 227
Re: Bildschirmbereiche kopieren
« Antwort #2 am: Sa 07.02.2009, 15:36:07 »
Ja, genau die Funktion habe ich im Auge. Aber es funktioniert nicht. Irgendwie scheine ich doch was falsch zu machen:  :(

/* Bereich (100,100) bis (200,200) sichern */
MFDB* sicher = get_screen_content(vdi_handle, 100, 100, 200, 200);

...irgendwas machen...

/* Sicherung wieder herstellen */
put_screen_content(vdi_handle, 100, 100, sicher);
free(sicher);


MFDB* get_screen_content(VdiHdl handle, short x1, short y1, short x2, short y2) {
MFDB* src  = (MFDB*)malloc(sizeof(MFDB));
MFDB* dest = (MFDB*)malloc(sizeof(MFDB));

if (src && dest) {
short pxyarray[8];

src->fd_addr = dest->fd_addr = 0L;
pxyarray[0]  = pxyarray[4]   = x1;
pxyarray[1]  = pxyarray[5]   = y1;
pxyarray[2]  = pxyarray[6]   = x2;
pxyarray[3]  = pxyarray[7]   = y2;

vro_cpyfm(handle, S_ONLY, pxyarray, src, dest);

free(src);
}

return dest;
}


short put_screen_content(VdiHdl handle, short x, short y, MFDB* section) {
int   rc   = -1;

MFDB* src  = section;
MFDB* dest = (MFDB*)malloc(sizeof(MFDB));

if (src && dest) {
short pxyarray[8];

dest->fd_addr = 0L;
pxyarray[0] = pxyarray[4] = x;
pxyarray[1] = pxyarray[5] = y;
pxyarray[2] = pxyarray[6] = x + src->fd_w - 1;
pxyarray[3] = pxyarray[7] = y + src->fd_h - 1;

vro_cpyfm(handle, S_ONLY, pxyarray, src, dest);

free(src);

rc = 0;
}

if (dest) {
free(dest);
}

return rc;
}


gstoll

  • Gast
Re: Bildschirmbereiche kopieren
« Antwort #3 am: Sa 07.02.2009, 16:20:48 »
Leer
« Letzte Änderung: Mo 27.09.2010, 07:40:14 von gstoll »

Offline Count

  • Benutzer
  • Beiträge: 227
Re: Bildschirmbereiche kopieren
« Antwort #4 am: Sa 07.02.2009, 19:19:33 »
Klingt einleuchtend. get_screen_content soll ja einen Bildschirmausschnitt sichern und put_screen_content den gesicherten Ausschnitt wieder ins Bild kopieren.

Ich habe mal testweise in get_screen_content einen anderen Zielbereich angegeben, den ich mit malloc(0xffff) reserviere:

statt
src->fd_addr = dest->fd_addr = 0L;

nun
src->fd_addr  = 0L; dest->fd_addr = malloc(0xffff);

Es passiert aber immer noch nichts.

gstoll

  • Gast
Re: Bildschirmbereiche kopieren
« Antwort #5 am: So 08.02.2009, 16:30:21 »
Leer
« Letzte Änderung: Mo 27.09.2010, 07:40:28 von gstoll »

Offline Count

  • Benutzer
  • Beiträge: 227
Re: Bildschirmbereiche kopieren
« Antwort #6 am: Sa 14.02.2009, 15:37:38 »
leer
« Letzte Änderung: So 22.11.2015, 19:11:45 von Count »