Ответы пользователя по тегу C#
  • NotifyIcon text более 64 символов C#. Как сделать?

    @kestik
    Это баг, который можно обойти следующим образом (при использовании этого способа, ограничение будет равно 127 символам):
    NotifyIcon icon = new NotifyIcon();
    string text = "bla-bla-bla";
    
    // Оберните код ниже в метод для удобства.
    Type t = typeof(NotifyIcon);
    BindingFlags hidden = BindingFlags.NonPublic | BindingFlags.Instance;
    t.GetField("text", hidden).SetValue(icon, text);
    if ((bool)t.GetField("added", hidden).GetValue(icon))
    {
      t.GetMethod("UpdateIcon", hidden).Invoke(icon, new object[] { true });
    }
    Ответ написан
    Комментировать
  • Округление координат Unity3d?

    @kestik
    wiki.unity3d.com/index.php?title=SnapToGrid

    Данный скрипт нужно положить в папку Editor
    using UnityEngine;
    using UnityEditor;
    using System.Collections;
     
    public class SnapToGrid : ScriptableObject {
     
    	[MenuItem ("Window/Snap to Grid %g")]
    	static void MenuSnapToGrid() {
    		foreach (Transform t in Selection.GetTransforms(SelectionMode.TopLevel | SelectionMode.OnlyUserModifiable)) {
    			t.position = new Vector3 (
    				Mathf.Round(t.position.x / EditorPrefs.GetFloat("MoveSnapX")) * EditorPrefs.GetFloat("MoveSnapX"),
    				Mathf.Round(t.position.y / EditorPrefs.GetFloat("MoveSnapY")) * EditorPrefs.GetFloat("MoveSnapY"),
    				Mathf.Round(t.position.z / EditorPrefs.GetFloat("MoveSnapZ")) * EditorPrefs.GetFloat("MoveSnapZ")
    			);
    		}
    	}
     
    }
    Ответ написан
    Комментировать
  • Как скрывать курсор и появлять?

    @kestik
    docs.unity3d.com/540/Documentation/ScriptReference...

    Скрыть:
    Cursor.visible = false;
    Показать:
    Cursor.visible = true;
    Ответ написан
    Комментировать
  • C# регулярка для ][?

    @kestik
    string text = "[текст 1] необходимый текст [текст 2]";
    
    Regex re = new Regex(@"\](.+)\[", RegexOptions.IgnoreCase);
    Match m = re.Match(text);
    
    // m.Groups[1].Value будет содержать необходимый вам текст.
    // Нулевой элемент массива m.Groups содержит исходный текст.
    Console.WriteLine(m.Groups[1].Value);
    Ответ написан
    Комментировать
  • Почему не получается сделать анимацию цвета?

    @kestik
    Вы пытаетесь анимировать свойство Fill при помощи ColorAnimation, но это свойство, в случае заливки круга сплошным цветом, содержит в себе SolidColorBrush. В свою очередь, SolidColorBrush содержит свойство Color, которое вы можете анимировать, используя ColorAnimation.
    Вот Ваш исправленный пример:
    <Ellipse Width="50" Height="50" Fill="#fff">
        <Ellipse.Triggers>
            <EventTrigger RoutedEvent="Ellipse.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <ColorAnimation Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)" To="Yellow" Duration="0:0:3" RepeatBehavior="Forever" AutoReverse="True"/>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Ellipse.Triggers>
    </Ellipse>


    Пример с мигающим кругом:
    <Ellipse Width="50" Height="50" Fill="White">
      <Ellipse.Triggers>
        <EventTrigger RoutedEvent="Ellipse.Loaded">
          <BeginStoryboard>
            <Storyboard>
              <ColorAnimationUsingKeyFrames Storyboard.TargetProperty="(Ellipse.Fill).(SolidColorBrush.Color)" RepeatBehavior="Forever" FillBehavior="Stop">
                <DiscreteColorKeyFrame Value="Red" KeyTime="0:0:3"/>
                <DiscreteColorKeyFrame Value="White" KeyTime="0:0:3.1"/>
              </ColorAnimationUsingKeyFrames>
            </Storyboard>
          </BeginStoryboard>
        </EventTrigger>
      </Ellipse.Triggers>
    </Ellipse>


    Пояснения по второму примеру:
    ColorAnimationUsingKeyFrames — анимация цвета при помощи ключевых кадров на временной шкале.
    Свойство FillBehavior="Stop" возвращает объект в исходное состояние после окончания анимации.

    DiscreteColorKeyFrame — ключевой кадр анимации цвета без плавных переходов между кадрами.
    Свойство Value задает необходимое значение для анимируемого свойства (в данном случае это свойство — Fill).
    Свойство KeyTime задает положение ключевого кадра на временной шкале.

    Свойство KeyTime второго ключевого кадра анимации задает продолжительность видимости красного цвета. В данном примере продолжительность равна 100мс, потому как второй ключевой кадр активируется через 100мс после первого.
    Ответ написан
    2 комментария
  • Как получить данные из local storage браузера?

    @kestik
    Создайте экземпляр объекта браузера в вашем приложении, откройте в нем сайт и вызовите javascript-функцию localStorage.getItem("ключ"). Только для этого вам понадобится сторонняя реализация компонента браузера, потому как встроенный WebBrowser не поддерживает Local Storage. Одна из альтернатив встроенному браузеру: CefSharp.
    Ответ написан
    Комментировать