Блог Ерёмина Андрея обо всём на свете…

Archive for Март, 2010

Рабочий стол в стиле WM7


Всегда относился с недоверием к разного рода shell-заменителям или нечто подобному, однако с удовольствием тестировал данные приложения.

image

Rainmeter – можно сказать, это бесплатная версия Stardock DesktopX, менее удобная, но зато более быстрая. Скачать программу можно здесь. Тему в стиле WM7 ищите здесь. Выглядит, конечно красиво, но довольно скоро начинаешь сталкиваться с разного рода трудностями – то твиттер показывает что-то совсем не похожее на твитты, то гаджет notes не может показать кирилицу (хотя это лечится пересохранением одного txt-документика с UTF8 кодировкой). В общем, красиво, но жутко не удобно.

Technorati Теги: ,,,

Мой переводчик


Написал простенький переводчик на основне Bing Translator API. Сначало, идей было много, но потом их почему-то не стало. smile_sad

Странно, но метод .Detect() работает как-то неправильно – собственно, он неверно определяет язык, используемый в тексте. Есть идея почему так происходит, но нет ни малейшего представления как это обойти smile_sad, поэтому выбор языка осуществляется вручную через combobox smile_regular.

 translator

 Скачать

Technorati Теги: ,,,,,,

Glass-прозрачность в WPF


Как сделать Glass-прозрачность в WPF-приложении?

1) Разместите следующий код в файле класса окна к которому вы хотите добавить glass:

[StructLayout(LayoutKind.Sequential)]
public struct MARGINS
{
    public int cxLeftWidth;      // width of left border that retains its size
    public int cxRightWidth;     // width of right border that retains its size
    public int cyTopHeight;      // height of top border that retains its size
    public int cyBottomHeight;   // height of bottom border that retains its size
};

[DllImport("DwmApi.dll")]
public static extern int DwmExtendFrameIntoClientArea(
    IntPtr hwnd,
    ref MARGINS pMarInset);

2)свойство окна Background сделайте Transparent и добавьте следующий код к событию Loaded:

try
   {
      // Obtain the window handle for WPF application
      IntPtr mainWindowPtr = new WindowInteropHelper(this).Handle;
      HwndSource mainWindowSrc = HwndSource.FromHwnd(mainWindowPtr);
      mainWindowSrc.CompositionTarget.BackgroundColor = Color.FromArgb(0, 0, 0, 0);

      // Get System Dpi
      System.Drawing.Graphics desktop = System.Drawing.Graphics.FromHwnd(mainWindowPtr);
      float DesktopDpiX = desktop.DpiX;
      float DesktopDpiY = desktop.DpiY;

      // Set Margins
      NonClientRegionAPI.MARGINS margins = new NonClientRegionAPI.MARGINS();

      // Extend glass frame into client area
      // Note that the default desktop Dpi is 96dpi. The  margins are
      // adjusted for the system Dpi.
      margins.cxLeftWidth = Convert.ToInt32(5 * (DesktopDpiX / 96));
      margins.cxRightWidth = Convert.ToInt32(5 * (DesktopDpiX / 96));
      margins.cyTopHeight = Convert.ToInt32(((int)topBar.ActualHeight + 5) * (DesktopDpiX / 96));
      margins.cyBottomHeight = Convert.ToInt32(5 * (DesktopDpiX / 96));      int hr = NonClientRegionAPI.DwmExtendFrameIntoClientArea(mainWindowSrc.Handle, ref margins);
      //
      if (hr < 0)
      {
         //DwmExtendFrameIntoClientArea Failed
      }
   }
   // If not Vista, paint background white.
   catch (DllNotFoundException)
   {
      Application.Current.MainWindow.Background = Brushes.White;
   }

3) вот и всё.

image

Technorati Теги: ,,,,,

Если не можете заплатить – напишите сами! Bing Translator, C#


Допустим, вам приходится иногда использовать переводчик для перевода слов или небольших текстов. Для этого вы можете использовать либо платные, качественные программные продукты (PROMT, Lingvo и т.д.), либо не менее качественные, но бесплатные онлайн переводчики (Bing Translator, Google Translate и другие). Минусы у последних – работа через веб-интерфейс, медленная скорость перевода (из-за слабенького интернета – у кого как, конечно). И если ускорить процесс перевода мы, увы, никак не сможем, то разработать свой интерфейс для работы с онлайн переводчиками вполне реально.

В данной статье я расскажу, как просто можно написать маленький переводчик, используя Bing Translator API v2.

1) Открываем Visual Studio 2008 ну или что-то посвежее и создаём новый проект – я указал тип: WPF Application.

01

2) Теперь, нам нужно подключить Bing Translator API к нашему проекту. Для этого нажмите ПКМ на названии проекта и выберите пункт Service Reference. В появившемся окне добавьте ссылку на нужный нам API: http://api.microsofttranslator.com/V1/SOAP.svc Не забудьте указать имя для добавляемого API – у меня это будет BingTranslator.

image

3) Создадим простой интерфейс для будущего переводчика. Добавим 2 текстовых поля: txt_to_translate и txt_translated, а также кнопку: btn_translate. Можно ещё добавить две Label’ки с надписями: “Type text here:” и “Result:”.

image

4) Для работы с Bing Translator API нам понадобиться создать AppID. Перейдите по ссылке: http://www.bing.com/developers и создайте APPID для своей программы.

3

5) Возвращаемся к нашему проекту. Добавим событие Click для нашей кнопки, для этого дважды щёлкните по ней ЛКМ и добавьте следующий код:

txt_translated.Text = "";
try
{
    txt_translated.Text = client.Translate("!!!!!!!!!!!НАПИШИТЕ ЗДЕСЬ СВОЙ APPID!!!!!!!!!!!"
    , txt_to_translate.Text, "ru", "en");
}
catch (Exception ex)
{
    MessageBox.Show(ex.Message);
}

Данный код передаст переведённый с русского языка на английский текст из поля txt_to_translate в поле txt_translated.

Вот и всё. Дальше всё зависит от вашего желания – в принципе, ничего не мешает сделать вам полноценный многофункциональный переводчик. Детальную справку о всех возможностях Bing Translator API можно получить здесь.

image

Исходный код можно скачать здесь.

Паралимпиада – или кому-то должно быть очень стыдно!


105898[1]

Сейчас в Ванкувере проходят Паралимпийские игры. Россия пока на них лидирует. Возможно, к концу игр мы и уступим первое место, но, не думаю, что опустимся ниже 3-его. Хотя интерес, для меня, в этих играх в другом. Кто в них участвует? Люди с ограниченными возможностями – инвалиды. Несмотря на ограничения, они находят в себе силы побеждать, за что им огромное спасибо. А что же наша олимпийская сборная? Вроде все нормальные, не инвалиды: 2 руки, 2 ноги, но, вот, лыжи не едут, вот, как-то не играется – не стыдно ли?

Кто в этом виноват? Наверное, деньги, ведь участники паралимпийских игр получат намного меньше, чем члены олимпийской сборной, а значит их цель – победить, завоевать медаль, доказать, что, даже имея ограничения по тем или иным причинам, человек способен на многое, а что же наши хоккеисты-она….ой, простите..вырвалось?

Облако меток