я вообще 2 года не могу определется какой язык мне больше нравиться)
|
Цитата:
потом говно сайты, и вот уже второй год в js, |
Цитата:
Цитата:
|
пока 17)
|
l-liava-l, норм, ты хоть язык выбрал)
А я досихпор толком не выбрал, мне нравиться писать на js но не нравиться что я не могу писать нормально приложения как на С++ или C#. Поэтому не знаю не одного языка выше среднего(( |
Дзен-трансгуманист, программирование под винду это сущий ад. Я искрени ненавижу майкрософт.
Разница довольно таки приличная, когда пишешь на js довольно таки много вещей не учитываешь, к примеру большинство фишек которые можно провернуть на js на том же C# или C++ и близко не прокатит. Или допустим анимация вот к примеру если так замутить анимацию то на слабых пк это будет тормозить.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace SlideTabAnimation
{
/// <summary>
/// Тип функции используемой для анимации
/// </summary>
enum DeltaType {
Linear,
Degree
}
class ControlAnimation
{
public delegate void AnimationProgress(double progress);
public event AnimationProgress Progress;
public event EventHandler CallBack;
public delegate double Delta(double progress);
Timer timer;
int delay = 30,start;
DeltaType _type = DeltaType.Linear;
/// <summary>
/// Создает новый таймер
/// </summary>
/// <param name="duration">Время выполнения анимации (в секундах)</param>
public ControlAnimation(double duration)
{
Create(duration);
}
double duration;
/// <summary>
/// Создает новый таймер
/// </summary>
/// <param name="duration">Время выполнения анимации (в секундах)</param>
/// <param name="delay">Время между кадрами (в миллисекундах)</param>
public ControlAnimation(double duration, int delay)
{
this.duration = duration;
Create(delay, duration);
}
/// <summary>
/// вызывает событие анимации
/// </summary>
/// <param name="delay">время между кадрами.</param>
/// <param name="duration">длительность анимации.</param>
void animate(int delay, double duration)
{
Delta func = linear;
start = 0;
timer = new Timer();
timer.Interval = delay;
if (_type == DeltaType.Degree)
func = degree;
timer.Tick += delegate(object sender, EventArgs e)
{
start += delay;
double progress = start / duration;
if (progress > 1) progress = 1;
if (Progress != null)
Progress(func(progress));
if (progress == 1) {
timer.Stop();
if (CallBack != null)
CallBack(timer, new EventArgs());
}
};
}
double linear(double progress)
{
return progress;
}
double degree (double progress)
{
return Math.Pow(progress, 3.5);
}
public void Stop()
{
timer.Stop();
}
/// <summary>
/// Запуск анимации
/// </summary>
/// <param name="_continue">если true то продолжаеться предыдущая анимация, иначе начинаеится новая.</param>
public void Start(bool _continue)
{
if (timer.Enabled) return;
if (_continue) timer.Start();
else
{
start = 0;
timer.Start();
}
}
/// <summary>
/// Создает новый таймер
/// </summary>
/// <param name="duration">Время выполнения анимации (в секундах)</param>
public void Create(double duration)
{
animate(delay, duration * 1000);
this.duration = duration;
}
/// <summary>
/// Создает новый таймер
/// </summary>
/// <param name="delay">Время между кадрами (в миллисекундах)</param>
/// <param name="duration">Время выполнения анимации (в секундах)</param>
public void Create(int delay, double duration)
{
animate(delay, duration * 1000);
this.duration = duration;
}
/// <summary>
/// Стостояние таймера
/// </summary>
public bool Enabled
{
get { return timer.Enabled; }
}
/// <summary>
/// Время выполнения анимации (в секундах)
/// </summary>
public double Duration
{
get { return duration; }
}
public DeltaType DeltaType {
get { return _type; }
set {
_type = value;
Create(delay, duration);
}
}
}
}
Написать обычный табы с анимацией, это столько головной боли. Под js писать легче. |
Цитата:
Цитата:
Цитата:
Цитата:
|
Poznakomlus, не так случайно?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace DesingeSlideTab
{
public class SlideForm: Form
{
private bool _hover = false;
public delegate void ChangeBox(bool value);
public event ChangeBox ChangeMininizeBox;
public event ChangeBox ChangeMaximizeBox;
public bool IsTilteBar
{
get { return _hover; }
set
{
_hover = value;
}
}
private int WS_CAPTION = (int)0x00C00000L;
protected override CreateParams CreateParams
{
get
{
CreateParams cp = base.CreateParams;
cp.Style &= ~WS_CAPTION;
return cp;
}
}
private const int WM_NCHITTEST = 0x84;
private const int HTCAPTION = 0x2;
private const int HTCLIENT = 0x1;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (m.Msg == WM_NCHITTEST && _hover && (int)m.Result == HTCLIENT)
{
m.Result = (IntPtr)HTCAPTION;
}
}
public new bool MaximizeBox
{
get { return base.MaximizeBox; }
set {
base.MaximizeBox = value;
if (ChangeMaximizeBox != null)
ChangeMaximizeBox(value);
}
}
public new bool MinimizeBox
{
get { return base.MinimizeBox; }
set
{
base.MinimizeBox = value;
if (ChangeMininizeBox != null)
ChangeMininizeBox(value);
}
}
}
}
|
Poznakomlus, я к тому что оно работает, но я забросил.
Сейчас выложу исходники |
Цитата:
Цитата:
Единственное что мне у них нравиться это skyDrive. Цитата:
Вот https://docs.google.com/file/d/0B7Wd...WTg/edit?pli=1 , до дизайна руки так и не дошли. Что бы запустить без visual studio, нужно запустить \DesingeSlideTab\DesingeSlideTab\bin\Debug\Desinge SlideTab.exe |
| Часовой пояс GMT +3, время: 04:17. |