wpf - Transformation does not work correctly -


here code rotates object. have rotate 2 same type of objects.

initialization:

private transformgroup trgrp;         private rotatetransform trrot;         private transformgroup trgrp1;         private rotatetransform trrot1;         static private double angle;         serialport port;         value v;         string result;         public int zerovalue;         public mainwindow()         {             initializecomponent();             angle = 0;             zerovalue = 327;             trgrp = new transformgroup();             trrot = new rotatetransform(angle) { centerx = rectangle1.width / 2, centery = rectangle1.height };             trgrp1 = new transformgroup();             trrot1 = new rotatetransform(angle) { centerx = rectangle1.width / 2, centery = rectangle1.height };            // trgrp.children.add(trrot);             //trgrp1.children.add(trrot1);             v = new value();             port = new serialport("com1", 9600, parity.none, 8, stopbits.one);             port.datareceived += new serialdatareceivedeventhandler(port_datareceived);             port.open();         } 

code serial port received data:

void port_datareceived(object sender, serialdatareceivedeventargs e)         {             if (!port.isopen)             {                  port.open();              }              try             {                 result = port.readline();                 result = result.replace("\r", "");             }              catch (exception e1)             { messagebox.show(e1.message); }             int[] temp = new int[4];             this.dispatcher.begininvoke(system.windows.threading.dispatcherpriority.background,         new action(           delegate()           {                 try               {                        temp[0] = int.parse(result[1].tostring() + result[2].tostring() + result[3].tostring() + result[4].tostring());                        if (temp[0] == zerovalue)                       {                            trrot.angle = 0;                           trgrp.children.add(trrot);                           rectangle1.rendertransform = trgrp;                           trgrp.children.removeat(0);//because add function adds new trgrp size increases , not need old trgrp remove them.                           label3.content = trrot.angle.tostring();                        }                        else if (temp[0] > zerovalue)                       {                            int totalvalues = temp[0] - zerovalue;                           if (totalvalues == 1)                            {                               totalvalues = 0;                           }                           textbox3.text = temp[0].tostring();                           angle = totalvalues * properties.settings.default.angle;                            if (angle<31)                           {                               trrot.angle = angle / 2;                               trgrp.children.add(trrot);                               rectangle1.rendertransform = trgrp;                               //trgrp.children.removeat(1);//because add function adds new trgrp size increases , not need old trgrp remove them.                               trgrp.children.remove(trrot);                               label3.content = angle.tostring();                           }                           }                       else if (temp[0] < zerovalue)                       {                            int totalvalues = zerovalue - temp[0];                           if (totalvalues==1)                           {                               totalvalues = 0;                           }                           textbox3.text = temp[0].tostring();                           angle = -totalvalues * properties.settings.default.angle;                            if (angle> -21)                           {                               trrot.angle = angle / 2;                           trgrp.children.add(trrot);                           rectangle1.rendertransform = trgrp;                           trgrp.children.remove(trrot);//because add function adds new trgrp size increases , not need old trgrp remove them.                           label3.content = angle.tostring();                           }                           }                }               catch (exception)               { }           }       ));             this.dispatcher.begininvoke(system.windows.threading.dispatcherpriority.background,         new action(           delegate()           {                try               {                   temp[1] = int.parse(result[6].tostring() + result[7].tostring() + result[8].tostring() + result[9].tostring());                   if (temp[1] == zerovalue)                   {                        trrot1.angle = 0;                       trgrp.children.add(trrot1);                       rectangle2.rendertransform = trgrp1;                       trgrp1.children.removeat(1);//because add function adds new trgrp size increases , not need old trgrp remove them.                       // textbox3.text = trrot.angle.tostring();                       label4.content = angle.tostring();                    }                    else if (temp[1] > zerovalue)                   {                        int totalvalues = temp[1] - zerovalue;                       if (totalvalues == 1)                       {                           totalvalues = 0;                       }                       angle = totalvalues * properties.settings.default.angle;                       angle = math.round(angle, 0);                       if (angle < 21)                       {                           trrot1.angle = angle / 2;                           trgrp1.children.add(trrot1);                           rectangle2.rendertransform = trgrp1;                           trgrp1.children.removeat(0);//because add function adds new trgrp size increases , not need old trgrp remove them.                           label4.content = angle.tostring();                       }                   }                   else if (temp[1] < zerovalue)                   {                        int totalvalues = zerovalue - temp[1];                       if (totalvalues == 1)                       {                           totalvalues = 0;                       }                       angle = -totalvalues * properties.settings.default.angle;                        if (angle > -21)                       {                           trrot1.angle = angle / 2;                           trgrp1.children.add(trrot1);                           rectangle2.rendertransform = trgrp1;                           trgrp1.children.removeat(0);//because add function adds new trgrp size increases , not need old trgrp remove them.                           label4.content = angle.tostring();                       }                     }               }               catch (exception)               {                 }           }));           } 

i have used here 2 dispatcher.begininvok' functions because want rotate both objects simultaneously. issue when use 1 object rotate no issue come. when include second 1 first objects not rotate correctly according angle have mentioned in program. understand problem everytime event fired transformgroup adds new rotatetransform. tried remove added trrot after addition. not work me. thanks.

you can add simple trigger start animations in xaml... let's add bool property named isready. trigger animations start when set true , stop when set false. add style whichever objects contain rotatetransform object needs animated:

<style>     <style.triggers>         <datatrigger binding="{binding isready}" value="true">             <datatrigger.enteractions>                 <beginstoryboard>                     <storyboard repeatbehavior="forever">                         <doubleanimation storyboard.targetproperty="rendertransform. (rotatetransform.angle)" from="0" to="359" duration="0:0:1" />                     </storyboard>                 </beginstoryboard>             </datatrigger.enteractions>         </datatrigger>     </style.triggers> </style> 

Comments

Popular posts from this blog

html - How to style widget with post count different than without post count -

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

javascript - storing input from prompt in array and displaying the array -