Visualizzazione dei risultati da 1 a 9 su 9

Discussione: disegnare rettangolo

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2002
    Messaggi
    2,929

    disegnare rettangolo

    ciao a tutti,

    Ho due campi input sulla root e un tasto invia, in questi campi dovrei inserire le coordinate per disegnare il rettangolo esattammente la larghezza e l'altezza epressa in mm

    esempio:

    inserisco nel campo input 1 = 20 e nel campo input 2 = 30 premendo il tasto invia vorrei ottenere un rettangolo che misura mm 20x30

    è possibile?


    Grazie

  2. #2
    ciao cosi' lo crei via AS:

    codice:
    this.createEmptyMovieClip("sfondo",1);
    with(sfondo){
    	beginFill(0xff3300,100);
        //inizia da angolo sup sx x,y
    	moveTo(100,200);
        lineStyle(1,0x000000,100);
    	//disegna fino a x,y linea 
        lineTo(850,200);
        lineStyle(1,0xFFFFFF,100);
    	//disegna linea fino da x a y 
        lineTo(850,450);
        lineStyle(1,0xFFFFFF,100);
    	//disegna linea fino da y a x
        lineTo(100,450);
        lineStyle(1,0x000000,100);
    	//chiudi il quadrato
        lineTo(100,200);
    	_x = 5;
    	_y = 5;
    }
    imposta i valori i modo che assumano il contenuto del capo di input


    -Nextart.it Graphic Solutions

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182

    Re: disegnare rettangolo

    Originariamente inviato da Rossella_75
    la larghezza e l'altezza epressa in mm
    attenzione a questa affermazione, si parla sempre di un'applicazione che gira su schermo, e la misure sullo schermo sono espresse in pixel, così come anche nelle azioni suggerite da nextart

    a vista, ma potrei anche sbagliarmi, il calcolo per trasformare in pixel (utili al fine del calcolo nello script) le quantità che tu inserisci in mm nel campo di testo, risulta abbastanza complicato VVoVe:

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    ci ho lavorato un po' ma alla fine ho fatto qualcosa che potrebbe esserti utile...

    in tutto 2 frame...

    nel primo metti 2 campi input chiamati altezza e larghezza (minuscolo..)
    ...metti uno stop..
    ...metti un pulsante con il codice:
    on (release) {
    LARG = _root.larghezza.text;
    ALTE = _root.altezza.text;
    gotoAndStop(2);
    }

    praticamente crei due variabili con i valori che hai inserito nei capi input...

    nel secondo frame:

    stop;
    trace(DUE);
    trace(TRE);
    var DUE:Number = Number(LARG);
    var TRE:Number = Number(ALTE)+100;
    this.createEmptyMovieClip("sfondo",1);
    with(sfondo){
    beginFill(0xff3300,100);
    //inizia da angolo sup sx x,y
    moveTo(0,100);
    lineStyle(1,0x000000,100);
    //disegna fino a x,y linea
    lineTo(DUE,100);
    lineStyle(1,0xFFFFFF,100);
    //disegna linea fino da x a y
    lineTo(DUE,TRE);
    lineStyle(2,0xFFFFFF,100);
    //disegna linea fino da y a x
    lineTo(0,TRE);
    lineStyle(1,0x000000,100);
    //chiudi il quadrato
    lineTo(0,100);
    }


    il gioco è fatto... si può migliorare... anzi sicuramente è moooooolto primitivo...
    ma ti dovrebbe bastare per ora...

  5. #5
    Originariamente inviato da telegio
    ci ho lavorato un po' ma alla fine ho fatto qualcosa che potrebbe esserti utile...

    in tutto 2 frame...

    nel primo metti 2 campi input chiamati altezza e larghezza (minuscolo..)
    ...metti uno stop..
    ...metti un pulsante con il codice:
    on (release) {
    LARG = _root.larghezza.text;
    ALTE = _root.altezza.text;
    gotoAndStop(2);
    }

    praticamente crei due variabili con i valori che hai inserito nei capi input...

    nel secondo frame:

    stop;
    trace(DUE);
    trace(TRE);
    var DUE:Number = Number(LARG);
    var TRE:Number = Number(ALTE)+100;
    this.createEmptyMovieClip("sfondo",1);
    with(sfondo){
    beginFill(0xff3300,100);
    //inizia da angolo sup sx x,y
    moveTo(0,100);
    lineStyle(1,0x000000,100);
    //disegna fino a x,y linea
    lineTo(DUE,100);
    lineStyle(1,0xFFFFFF,100);
    //disegna linea fino da x a y
    lineTo(DUE,TRE);
    lineStyle(2,0xFFFFFF,100);
    //disegna linea fino da y a x
    lineTo(0,TRE);
    lineStyle(1,0x000000,100);
    //chiudi il quadrato
    lineTo(0,100);
    }


    il gioco è fatto... si può migliorare... anzi sicuramente è moooooolto primitivo...
    ma ti dovrebbe bastare per ora...
    rimane il problema che l'altezza è espressa in pixel e non in mm...

    bisognerebbe riuscire a fare la conversione a tal proposito ma non lo trovo affatto semplice ... come già detto da AND
    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

  6. #6
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Originariamente inviato da enigma_79
    rimane il problema che l'altezza è espressa in pixel e non in mm...

    bisognerebbe riuscire a fare la conversione a tal proposito ma non lo trovo affatto semplice ... come già detto da AND
    forse ho parlato troppo presto
    codice:
    var mmToPx:Function = function(n:Number):Number{
    	var ItoMM:Number = 25.4;
    	var dpi:Number = System.capabilities.screenDPI;
    	var dpmm:Number = dpi/inchMM;
    	var nPx:Number = n*dpmm;
    	return nPx;
    }
    var larghezza:Number = mmToPx(20); // restituisce, per 72dpi, 56,69E px
    var altezza:Number = mmToPx(20); // restituisce, per 72dpi, 56,69E px
    scritta di getto e non provata su flash, ma ho testato le dimensioni su PS e sembra ok

    per avere numeri interi basta aggiungere Math.round

    codice:
    var larghezza:Number = Math.round(mmToPx(20)); // restituisce, per 72dpi, 57px
    var altezza:Number = Math.round(mmToPx(20)); // restituisce, per 72dpi, 57px

  7. #7
    Originariamente inviato da and80
    forse ho parlato troppo presto
    codice:
    var mmToPx:Function = function(n:Number):Number{
    	var ItoMM:Number = 25.4;
    	var dpi:Number = System.capabilities.screenDPI;
    	var dpmm:Number = dpi/inchMM;
    	var nPx:Number = n*dpmm;
    	return nPx;
    }
    var larghezza:Number = mmToPx(20); // restituisce, per 72dpi, 56,69E px
    var altezza:Number = mmToPx(20); // restituisce, per 72dpi, 56,69E px
    scritta di getto e non provata su flash, ma ho testato le dimensioni su PS e sembra ok

    per avere numeri interi basta aggiungere Math.round

    codice:
    var larghezza:Number = Math.round(mmToPx(20)); // restituisce, per 72dpi, 57px
    var altezza:Number = Math.round(mmToPx(20)); // restituisce, per 72dpi, 57px
    :rollo: ne sai una più del diavolo tu ...
    Consulenza aziendale a 360° http://www.gruppodg.it http://www.gruppodg.it/3d
    Realizzazione siti internet, Siti Flash, Ricerca Location per bar negozi , esercizi commerciali, sviluppo pratiche e allestimento

  8. #8
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    nemmeno io ho provato il tuo.. .ma ho testato un miglioramento del mio...

    aggiungi due campi nel primo frame e li chiami:
    icse
    ipsilon
    (che nomi del cacchio...)

    il pulsante sul primo frame ha questo codice:

    on (release) {
    LARG = _root.larghezza.text;
    ALTE = _root.altezza.text;
    ICSE = _root.icse.text;
    IPSILON = _root.ipsilon.text;
    gotoAndStop(2);
    }


    cancella il codice sul secondo frame e scrivi:

    stop;
    trace(ICSE);
    var DUE:Number = Number(LARG);
    var TRE:Number = Number(ALTE)+ Number(IPSILON);
    var COORDX:Number = Number(LARG)+ Number(ICSE);
    var COORDY:Number = Number(ALTE)+ Number(IPSILON);
    trace(COORDX);
    trace(DUE);
    trace(TRE);
    this.createEmptyMovieClip("sfondo",1);
    with(sfondo){
    beginFill(0xFF9900,60);
    //inizia da angolo sup sx x,y
    moveTo(ICSE,IPSILON);
    lineStyle(1,0x000000,100);
    //disegna fino a x,y linea
    lineTo(ICSE,COORDY);
    lineStyle(1,0x000000,100);
    //disegna linea fino da x a y
    lineTo(COORDX,COORDY);
    lineStyle(1,0x000000,100);
    //disegna linea fino da y a x
    lineTo(COORDX,IPSILON);
    lineStyle(1,0x000000,100);
    //chiudi il quadrato
    lineTo(ICSE,IPSILON);
    }


    sto andando avanti...

  9. #9
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    c'era un piccolo errore nello script che ho postato... inoltre mi son permesso di scrivere una piccola funzione abbastanza completa per creare rettangoli/quadrati via AS, semplice da usare

    codice:
    var mmToPx:Function = function(n:Number):Number{
    	var ItoMM:Number = 25.4;
    	var dpi:Number = System.capabilities.screenDPI;
    	var dpmm:Number = dpi/ItoMM;
    	var nPx:Number = n*dpmm;
    	return nPx;
    }
    var larghezza:Number = mmToPx(20); // restituisce, per 72dpi, 56,69E px
    var altezza:Number = mmToPx(20); // restituisce, per 72dpi, 56,69E px
    codice:
    var drawRect:Function =	function (target:MovieClip, name:String, level:Number, width:Number, height:Number, border:Number, borderColor:Number, color:Number, initObject:Object) {
    	target.createEmptyMovieClip(name, level);
    	with (target[name]) {
    		lineStyle(border == 0 ? border=undefined : border, borderColor);
    		moveTo(0, 0);
    		beginFill(color);
    		lineTo(width, 0);
    		lineTo(width, height);
    		lineTo(0, height);
    		lineTo(0, 0);
    		endFill();
    		if (initObject != undefined) {
    			_x = initObject._x != undefined ? initObject._x : 0;
    			_y = initObject._y != undefined ? initObject._y : 0;
    			_xscale = initObject._xscale != undefined ? initObject._xscale : 100;
    			_yscale = initObject._yscale != undefined ? initObject._yscale : 100;
    			_alpha = initObject._alpha != undefined ? initObject._alpha : 100;
    			_rotation = initObject._rotation != undefined ? initObject._rotation : 0;
    		}
    	}
    }
    drawRect(_root, "prova", 1, 100, 100, 0, 0x000000, 0xCCCCCC, {_x:100, _y:100, _alpha:50});
    nel caso richiesto le righe di richiamo delle funzioni sarebbero
    codice:
    var larghezza:Number = mmToPx(campotesto_larghezza.text);
    var altezza:Number = mmToPx(campotesto_altezza.text);
    drawRect(_root, "prova", 1, larghezza, altezza, 1, 0x000000, 0xCCCCCC);

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.