none
Как сделать "эффект прогибания под пальцем" элемента? RRS feed

  • Вопрос

  • В стандартных программах Windows Phone при нажатии при практически на любой элемент он как бы прогибается под пальцем. Как это можно реализовать в своей программе?
    22 августа 2013 г. 14:04

Ответы

  •   Вы точно так же можете сделать UserControl наследованный от System.Windows.Forms.Button и переопределить все события,
     те же нажатие или мышь на контроле, или еще что нибудь. и даже попробуйте сделать без рисунков. сделайте этот эффект с помощью обычного алгоритма, вам поможет класс
    Graphics с ее кучей возможности, начиная от DrawLine до FillRectangle.

    Windows phone не поддерживает WinForms.

    По вопросу: видел я что-то похожее в win phone toolkit.

    • Помечено в качестве ответа Progrik 23 августа 2013 г. 10:49
    23 августа 2013 г. 9:56

Все ответы

  • можно через обычный jpeg файл. описываете событие OnMouseDown()

    в методе меняете background рисунок. при отпускании. то есть OnMouseUp вставляете прежний jpeg.

    Сейчас пишу на память. возможно есть и другие. но суть одна. нужно обрабатывать при нажатии и отпускании

    • Предложено в качестве ответа Medet Tleukabiluly 23 августа 2013 г. 6:19
    22 августа 2013 г. 20:22
  • Используйте анимацию, реагирующую (как уже было сказано) на события OnMouseDown() и OnMouseUp().
    • Предложено в качестве ответа Medet Tleukabiluly 23 августа 2013 г. 6:19
    22 августа 2013 г. 21:38
    Модератор
  • Можно сделать анимацию только уменьшения элемента, а как сделать, чтобы так: нажимаешь на элемент, водишь пальцем по нему, а он под ним прогибается на разные углы. Как сделать так?
    23 августа 2013 г. 9:20
  •         private float _resizer = 1;
            private Point _initLocation;
            private Font _initFontSize;
            private Point _tempLocation;
            private Size _tempSize;
    public float XResizerFactor {
                get { return _resizer; }
                set  {  if (value < 10)  _resizer = value;
                    else { _resizer = 10; } }   }
    protected override void OnMouseDown(MouseEventArgs mevent)
            {   base.OnMouseDown(mevent);
                _initLocation = Location;
                _tempLocation = new Point(Location.X + Width/2, Location.Y + Height/2);
                _tempSize = Size;
                Size = new Size((int)(Width/_resizer), (int)(Height/_resizer));
                Location = new Point(_tempLocation.X - Size.Width/2, _tempLocation.Y - Size.Height/2);
                _initFontSize = Font;
                Font = new Font(Font.FontFamily, Font.Size/_resizer);
            }
    protected override void OnMouseUp(MouseEventArgs mevent)
            { base.OnMouseUp(mevent);
                Location = _initLocation;
                Size = _tempSize;
                Font = _initFontSize;}

    это я использовал в своем приложении. без каких либо картинок. при нажатии на кнопку она увеличивается или уменьшается (задается XResizerFactor). Вы точно так же можете сделать UserControl наследованный от System.Windows.Forms.Button и переопределить все события, те же нажатие или мышь на контроле, или еще что нибудь. и даже попробуйте сделать без рисунков. сделайте этот эффект с помощью обычного алгоритма, вам поможет класс Graphics с ее кучей возможности, начиная от DrawLine до FillRectangle.
    23 августа 2013 г. 9:46
  •   Вы точно так же можете сделать UserControl наследованный от System.Windows.Forms.Button и переопределить все события,
     те же нажатие или мышь на контроле, или еще что нибудь. и даже попробуйте сделать без рисунков. сделайте этот эффект с помощью обычного алгоритма, вам поможет класс
    Graphics с ее кучей возможности, начиная от DrawLine до FillRectangle.

    Windows phone не поддерживает WinForms.

    По вопросу: видел я что-то похожее в win phone toolkit.

    • Помечено в качестве ответа Progrik 23 августа 2013 г. 10:49
    23 августа 2013 г. 9:56
  • Спасибо! Нашел! Называется Tilt Effect, Спасибо огромное!
    23 августа 2013 г. 10:49