BUG: Poligono ROM chiama Allinea in alto nel relativo rettangolo

Traduzione articoli Traduzione articoli
Identificativo articolo: 59319
Questo articolo è stato archiviato. L?articolo, quindi, viene offerto ?così come è? e non verrà più aggiornato.
Espandi tutto | Chiudi tutto

In questa pagina

Sintomi

La posizione verticale di un poligono modificato mediante le routine ERASEPOLY, INVERTPOLY, PAINTPOLY e FILLPOLY strumenti ROM è correlata direttamente la coordinata y dell'angolo superiore sinistro del rettangolo che racchiude il poligono che viene passato tali routine. Non nel caso di FRAMEPOLY.

Microsoft ha confermato che si tratta da un bug con Microsoft QuickBasic versione 1.00 per Macintosh. È attualmente sono sta occupando del problema e si pubblicherà ulteriori informazioni qui appena sarà disponibile.

Informazioni

In altre parole, se la coordinata y dell'angolo superiore sinistro del rettangolo che lo contiene il poligono è minore della coordinata y del punto superiore del poligono specificato, quindi la coordinata y del punto superiore del poligono verrà disegnata con lo stesso valore la coordinata y dell'angolo superiore sinistro del rettangolo che racchiude il poligono. Verranno modificate il coordinate y dei punti rimanenti nel poligono verso l'alto di conseguenza.

Si supponga ad esempio, la coordinata y del punto superiore in un poligono è 200 e la coordinata y dell'angolo superiore sinistro del rettangolo che racchiude il poligono viene passata per le routine di disegno del poligono come 100. Quando viene chiamato FRAMEPOLY, la coordinata y del punto superiore nel poligono effettivamente disegnato è 200. Tuttavia, quando vengono chiamati FILLPOLY, INVERTPOLY, ERASEPOLY o PAINTPOLY, la coordinata y del punto superiore nel poligono creato verrà essere convertita a 100 perché che è il valore della coordinata y dell'angolo superiore sinistro del rettangolo che racchiude il poligono. Tenere presente che le coordinate del rettangolo vengono passate per le routine come un parametro e che è possibile (ed efficace nel caso di FRAMEPOLY) per passare un rettangolo in cui i lati del poligono non raggiunge toccare.

Per evitare questo comportamento, assicurarsi che la coordinata y dell'angolo superiore sinistro del rettangolo passato a FILLPOLY, INVERTPOLY, ERASEPOLY e routine PAINTPOLY è lo stesso la coordinata y del punto più alto nel poligono. Un'altra soluzione consiste nel richiamare le equivalente routine ROM FramePgon, FillPgon, InvertPgon, ErasePgon e PaintPgon con istruzione di casella degli strumenti del QuickBasic per disegnare poligoni. Il problema non si verifica con queste routine.

Il programma di esempio riportato di seguito viene illustrato il problema. Innanzitutto utilizzata FRAMEPOLY per disegnare un poligono e viene quindi chiesto di eseguire altre operazioni (FILLPOLY, INVERTPOLY, ERASEPOLY e PAINTPOLY) sul poligono stesso. Queste altre operazioni avranno effetto su un'altra area di sopra del poligono originale anche se vengono fornite le stesse coordinate di poligono. Questo avviene perché la coordinata y dell'angolo superiore sinistro del rettangolo che racchiude il poligono che viene passato le routine (100) è minore della coordinata y del punto superiore nel poligono (200). Lo stesso problema non verrà effettuata se casella degli strumenti istruzione della QuickBasic consente di richiamare direttamente le routine ROM FramePgon, FillPgon, InvertPgon, ErasePgon e PaintPgon in modo simile.

Esempio di codice

DIM polygon%(12)
DIM pattern%(3)

polygon%(0)  = 26                         'Number of bytes in array.

polygon%(1)  = 100 : polygon%(2)  = 10    'Coordinates of rectangle
polygon%(3)  = 300 : polygon%(4)  = 500   'enclosing the polygon.

polygon%(5)  = 200 : polygon%(6)  = 180   'Coordinates of the
polygon%(7)  = 260 : polygon%(8)  = 220   'endpoints of the polygon.
polygon%(9)  = 290 : polygon%(10) = 390
polygon%(11) = 200 : polygon%(12) = 180

FOR i = 0 to 3          'Create a pattern for use with FILLPOLY.
   pattern%(i) = 1234
NEXT i

FRAMEPOLY VARPTR(polygon%(0))

LOCATE 1,1
PRINT "Click to fill the polygon."
WHILE MOUSE(0) <> -1
WEND
FILLPOLY VARPTR(polygon%(0)),VARPTR(pattern%(0))

LOCATE 2,1
PRINT "Click to invert the polygon."
WHILE MOUSE(0) <> -1
WEND
INVERTPOLY VARPTR(polygon%(0))

LOCATE 3,1
PRINT "Click to erase the polygon."
WHILE MOUSE(0) <> -1
WEND
ERASEPOLY VARPTR(polygon%(0))

LOCATE 4,1
PRINT "Click to paint the polygon."
WHILE MOUSE(0) <> -1
WEND
PAINTPOLY VARPTR(polygon%(0))

LOCATE 5,1
PRINT "Click to end."
WHILE MOUSE(0) <> -1
WEND
				

Proprietà

Identificativo articolo: 59319 - Ultima modifica: giovedì 27 febbraio 2014 - Revisione: 1.2
Chiavi: 
kbnosurvey kbarchive kbmt kbbug KB59319 KbMtit
Traduzione automatica articoli
Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell?utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell?utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.
Clicca qui per visualizzare la versione originale in inglese dell?articolo: 59319
LE INFORMAZIONI CONTENUTE NELLA MICROSOFT KNOWLEDGE BASE SONO FORNITE SENZA GARANZIA DI ALCUN TIPO, IMPLICITA OD ESPLICITA, COMPRESA QUELLA RIGUARDO ALLA COMMERCIALIZZAZIONE E/O COMPATIBILITA' IN IMPIEGHI PARTICOLARI. L'UTENTE SI ASSUME L'INTERA RESPONSABILITA' PER L'UTILIZZO DI QUESTE INFORMAZIONI. IN NESSUN CASO MICROSOFT CORPORATION E I SUOI FORNITORI SI RENDONO RESPONSABILI PER DANNI DIRETTI, INDIRETTI O ACCIDENTALI CHE POSSANO PROVOCARE PERDITA DI DENARO O DI DATI, ANCHE SE MICROSOFT O I SUOI FORNITORI FOSSERO STATI AVVISATI. IL DOCUMENTO PUO' ESSERE COPIATO E DISTRIBUITO ALLE SEGUENTI CONDIZIONI: 1) IL TESTO DEVE ESSERE COPIATO INTEGRALMENTE E TUTTE LE PAGINE DEVONO ESSERE INCLUSE. 2) I PROGRAMMI SE PRESENTI, DEVONO ESSERE COPIATI SENZA MODIFICHE, 3) IL DOCUMENTO DEVE ESSERE DISTRIBUITO INTERAMENTE IN OGNI SUA PARTE. 4) IL DOCUMENTO NON PUO' ESSERE DISTRIBUITO A SCOPO DI LUCRO.

Invia suggerimenti

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com