Dreamine.UI.Wpf.Controls 1.0.1
Dreamine.UI.Wpf.Controls 사용자 인터페이스 기능과 구성 요소를 제공합니다.
로딩중...
검색중...
일치하는것 없음
Dreamine.UI.Wpf.Controls.DreamineImage 클래스 참조

더 자세히 ...

Dreamine.UI.Wpf.Controls.DreamineImage에 대한 상속 다이어그램 :
Dreamine.UI.Wpf.Controls.DreamineImage에 대한 협력 다이어그램:

Public 멤버 함수

 DreamineImage ()

정적 Public 속성

static readonly DependencyProperty CornerRadiusProperty
static readonly DependencyProperty SourceProperty
static readonly DependencyProperty FallbackSourceProperty
static readonly DependencyProperty ClickCommandProperty
static readonly DependencyProperty CommandParameterProperty
static readonly DependencyProperty IsWindowDragEnabledProperty
static readonly DependencyProperty IsDoubleClickToggleMaximizeProperty
static readonly DependencyProperty StretchProperty

속성

CornerRadius CornerRadius [get, set]
ImageSource? Source [get, set]
ImageSource? FallbackSource [get, set]
ICommand? ClickCommand [get, set]
object? CommandParameter [get, set]
bool IsWindowDragEnabled [get, set]
bool IsDoubleClickToggleMaximize [get, set]
Stretch Stretch [get, set]

Private 멤버 함수

void OnPreviewMouseLeftButtonDown (object sender, MouseButtonEventArgs e)
void OnMouseMove (object sender, MouseEventArgs e)
void OnMouseLeftButtonUp (object sender, MouseButtonEventArgs e)

정적 Private 멤버 함수

static DreamineImage ()

Private 속성

Point _pressPoint
bool _isDragging

상세한 설명

둥근 모서리, 대체 이미지, 클릭 명령과 창 드래그 동작을 제공하는 사용자 지정 이미지 컨트롤입니다.

DreamineImage.cs 파일의 20 번째 라인에서 정의되었습니다.

생성자 & 소멸자 문서화

◆ DreamineImage() [1/2]

Dreamine.UI.Wpf.Controls.DreamineImage.DreamineImage ( )
inlinestaticprivate

기본 스타일 키를 재정의하고 이미지 테마 리소스를 병합합니다.

DreamineImage.cs 파일의 268 번째 라인에서 정의되었습니다.

269 {
270 try
271 {
272
273 DefaultStyleKeyProperty.OverrideMetadata(typeof(DreamineImage),
274 new FrameworkPropertyMetadata(typeof(DreamineImage)));
275
276 var uri = new Uri("/Dreamine.UI.Wpf.Themes;component/DreamineImageStyle.xaml", UriKind.RelativeOrAbsolute);
277 bool alreadyAdded = Application.Current.Resources.MergedDictionaries
278 .OfType<ResourceDictionary>()
279 .Any(x => x.Source != null && x.Source.Equals(uri));
280
281 if (!alreadyAdded)
282 {
283 var dict = new ResourceDictionary { Source = uri };
284 Application.Current.Resources.MergedDictionaries.Add(dict);
285 }
286
287 }
288 catch
289 {
290 // 디자이너/테스트 환경 보호
291 }
292 }

다음을 참조함 : DreamineImage(), Source.

다음에 의해서 참조됨 : DreamineImage().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ DreamineImage() [2/2]

Dreamine.UI.Wpf.Controls.DreamineImage.DreamineImage ( )
inline

이미지 컨트롤을 만들고 마우스 누르기, 놓기와 이동 이벤트를 연결합니다.

DreamineImage.cs 파일의 302 번째 라인에서 정의되었습니다.

303 {
304 PreviewMouseLeftButtonDown += OnPreviewMouseLeftButtonDown;
305 MouseLeftButtonUp += OnMouseLeftButtonUp;
306 MouseMove += OnMouseMove;
307 // WPF Image에는 MouseDoubleClick 이벤트가 없으므로 사용하지 않음.
308 }

다음을 참조함 : OnMouseLeftButtonUp(), OnMouseMove(), OnPreviewMouseLeftButtonDown().

이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 함수 문서화

◆ OnMouseLeftButtonUp()

void Dreamine.UI.Wpf.Controls.DreamineImage.OnMouseLeftButtonUp ( object sender,
MouseButtonEventArgs e )
inlineprivate

마우스 캡처를 해제하고 드래그가 아니면 클릭 명령을 실행합니다.

매개변수
sender이벤트를 발생시킨 컨트롤입니다.
e마우스 버튼 이벤트 데이터입니다.

명령 실행 예외는 현재 구현에서 무시됩니다.

DreamineImage.cs 파일의 480 번째 라인에서 정의되었습니다.

481 {
482 ReleaseMouseCapture();
483
484 if (_isDragging) return; // 드래그로 끝난 경우 클릭 아님
485
486 if (ClickCommand?.CanExecute(CommandParameter) == true)
487 {
488 try { ClickCommand.Execute(CommandParameter); } catch { /* 무시 */ }
489 }
490 }

다음을 참조함 : _isDragging, ClickCommand, CommandParameter.

다음에 의해서 참조됨 : DreamineImage().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnMouseMove()

void Dreamine.UI.Wpf.Controls.DreamineImage.OnMouseMove ( object sender,
MouseEventArgs e )
inlineprivate

마우스 이동이 시스템 드래그 임계값을 넘으면 상위 창의 드래그 이동을 시작합니다.

매개변수
sender이벤트를 발생시킨 컨트롤입니다.
e버튼 상태와 위치를 제공하는 마우스 이벤트 데이터입니다.

마우스 캡처와 DragMove 예외는 UI 입력 흐름을 유지하기 위해 내부에서 무시됩니다.

DreamineImage.cs 파일의 411 번째 라인에서 정의되었습니다.

412 {
413 if (!IsWindowDragEnabled || e.LeftButton != MouseButtonState.Pressed)
414 return;
415
416 var p = e.GetPosition(this);
417 var dx = Math.Abs(p.X - _pressPoint.X);
418 var dy = Math.Abs(p.Y - _pressPoint.Y);
419
420 if (!_isDragging &&
421 (dx > SystemParameters.MinimumHorizontalDragDistance ||
422 dy > SystemParameters.MinimumVerticalDragDistance))
423 {
424 _isDragging = true;
425
426 // \note DragMove 직전 캡처 해제 (드래그 씹힘 방지 핵심)
427 try
428 {
429 if (Mouse.Captured == this)
430 ReleaseMouseCapture();
431 else
432 Mouse.Capture(null);
433 }
434 catch { /* ignore */ }
435
436 try
437 {
438 var win = Window.GetWindow(this);
439 win?.DragMove();
440 }
441 catch
442 {
443 // DragMove 중 예외는 조용히 무시
444 }
445 }
446 }

다음을 참조함 : _isDragging, _pressPoint, IsWindowDragEnabled.

다음에 의해서 참조됨 : DreamineImage().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnPreviewMouseLeftButtonDown()

void Dreamine.UI.Wpf.Controls.DreamineImage.OnPreviewMouseLeftButtonDown ( object sender,
MouseButtonEventArgs e )
inlineprivate

더블클릭이면 창 상태를 전환하고, 그 외에는 드래그 기준점을 기록해 마우스를 캡처합니다.

매개변수
sender이벤트를 발생시킨 컨트롤입니다.
e클릭 횟수와 위치를 제공하는 마우스 이벤트 데이터입니다.

DreamineImage.cs 파일의 353 번째 라인에서 정의되었습니다.

354 {
355 // 1) 더블클릭 토글 (WPF는 ClickCount로 판별)
356 if (IsDoubleClickToggleMaximize && e.ClickCount == 2)
357 {
358 var win = Window.GetWindow(this);
359 if (win != null)
360 {
361 try
362 {
363 win.WindowState = win.WindowState == WindowState.Maximized
364 ? WindowState.Normal
365 : WindowState.Maximized;
366 e.Handled = true;
367 return;
368 }
369 catch { /* 무시 */ }
370 }
371 }
372
373 // 2) 드래그 대비 기준점 기록
374 _pressPoint = e.GetPosition(this);
375 _isDragging = false;
376 CaptureMouse();
377 }

다음을 참조함 : _isDragging, _pressPoint, IsDoubleClickToggleMaximize.

다음에 의해서 참조됨 : DreamineImage().

이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ _isDragging

bool Dreamine.UI.Wpf.Controls.DreamineImage._isDragging
private

현재 입력이 드래그로 판정되었는지 나타냅니다.

DreamineImage.cs 파일의 327 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : OnMouseLeftButtonUp(), OnMouseMove(), OnPreviewMouseLeftButtonDown().

◆ _pressPoint

Point Dreamine.UI.Wpf.Controls.DreamineImage._pressPoint
private

마우스를 누른 기준 위치입니다.

DreamineImage.cs 파일의 318 번째 라인에서 정의되었습니다.

다음에 의해서 참조됨 : OnMouseMove(), OnPreviewMouseLeftButtonDown().

◆ ClickCommandProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.ClickCommandProperty
static
초기값:
=
DependencyProperty.Register(
nameof(ClickCommand),
typeof(ICommand),
typeof(DreamineImage),
new PropertyMetadata(null))

클릭 시 실행할 명령 종속성 속성입니다.

DreamineImage.cs 파일의 79 번째 라인에서 정의되었습니다.

◆ CommandParameterProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.CommandParameterProperty
static
초기값:
=
DependencyProperty.Register(
typeof(object),
typeof(DreamineImage),
new PropertyMetadata(null))

클릭 명령 매개변수 종속성 속성입니다.

DreamineImage.cs 파일의 94 번째 라인에서 정의되었습니다.

◆ CornerRadiusProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.CornerRadiusProperty
static
초기값:
=
DependencyProperty.Register(
nameof(CornerRadius),
typeof(CornerRadius),
typeof(DreamineImage),
new FrameworkPropertyMetadata(new CornerRadius(0)))

이미지 모서리 반지름 종속성 속성입니다.

DreamineImage.cs 파일의 33 번째 라인에서 정의되었습니다.

◆ FallbackSourceProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.FallbackSourceProperty
static
초기값:
=
DependencyProperty.Register(
nameof(FallbackSource),
typeof(ImageSource),
typeof(DreamineImage),
new FrameworkPropertyMetadata(null))

기본 이미지 로드 실패 시 사용할 대체 소스 종속성 속성입니다.

DreamineImage.cs 파일의 64 번째 라인에서 정의되었습니다.

◆ IsDoubleClickToggleMaximizeProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.IsDoubleClickToggleMaximizeProperty
static
초기값:
=
DependencyProperty.Register(
typeof(bool),
typeof(DreamineImage),
new PropertyMetadata(true))

더블클릭 최대화 전환 활성화 여부 종속성 속성입니다.

DreamineImage.cs 파일의 124 번째 라인에서 정의되었습니다.

◆ IsWindowDragEnabledProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.IsWindowDragEnabledProperty
static
초기값:
=
DependencyProperty.Register(
typeof(bool),
typeof(DreamineImage),
new PropertyMetadata(false))

창 드래그 활성화 여부 종속성 속성입니다.

DreamineImage.cs 파일의 109 번째 라인에서 정의되었습니다.

◆ SourceProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.SourceProperty
static
초기값:
=
DependencyProperty.Register(
nameof(Source),
typeof(ImageSource),
typeof(DreamineImage),
new FrameworkPropertyMetadata(null))

기본 이미지 소스 종속성 속성입니다.

DreamineImage.cs 파일의 49 번째 라인에서 정의되었습니다.

◆ StretchProperty

readonly DependencyProperty Dreamine.UI.Wpf.Controls.DreamineImage.StretchProperty
static
초기값:
=
DependencyProperty.Register(
nameof(Stretch),
typeof(Stretch),
typeof(DreamineImage),
new PropertyMetadata(Stretch.Uniform))

이미지 늘이기 방식 종속성 속성입니다.

DreamineImage.cs 파일의 140 번째 라인에서 정의되었습니다.

속성 문서화

◆ ClickCommand

ICommand? Dreamine.UI.Wpf.Controls.DreamineImage.ClickCommand
getset

드래그가 아닌 클릭에서 실행할 명령을 가져오거나 설정합니다.

DreamineImage.cs 파일의 198 번째 라인에서 정의되었습니다.

199 {
200 get => (ICommand?)GetValue(ClickCommandProperty);
201 set => SetValue(ClickCommandProperty, value);
202 }

다음에 의해서 참조됨 : OnMouseLeftButtonUp().

◆ CommandParameter

object? Dreamine.UI.Wpf.Controls.DreamineImage.CommandParameter
getset

클릭 명령에 전달할 매개변수를 가져오거나 설정합니다.

DreamineImage.cs 파일의 212 번째 라인에서 정의되었습니다.

213 {
214 get => GetValue(CommandParameterProperty);
215 set => SetValue(CommandParameterProperty, value);
216 }

다음에 의해서 참조됨 : OnMouseLeftButtonUp().

◆ CornerRadius

CornerRadius Dreamine.UI.Wpf.Controls.DreamineImage.CornerRadius
getset

이미지 모서리 반지름을 가져오거나 설정합니다.

DreamineImage.cs 파일의 155 번째 라인에서 정의되었습니다.

156 {
157 get => (CornerRadius)GetValue(CornerRadiusProperty);
158 set => SetValue(CornerRadiusProperty, value);
159 }

◆ FallbackSource

ImageSource? Dreamine.UI.Wpf.Controls.DreamineImage.FallbackSource
getset

기본 소스를 표시할 수 없을 때 사용할 대체 이미지 소스를 가져오거나 설정합니다.

DreamineImage.cs 파일의 184 번째 라인에서 정의되었습니다.

185 {
186 get => (ImageSource?)GetValue(FallbackSourceProperty);
187 set => SetValue(FallbackSourceProperty, value);
188 }

◆ IsDoubleClickToggleMaximize

bool Dreamine.UI.Wpf.Controls.DreamineImage.IsDoubleClickToggleMaximize
getset

더블클릭으로 상위 창의 최대화와 복원을 전환할지 가져오거나 설정합니다.

DreamineImage.cs 파일의 240 번째 라인에서 정의되었습니다.

241 {
242 get => (bool)GetValue(IsDoubleClickToggleMaximizeProperty);
243 set => SetValue(IsDoubleClickToggleMaximizeProperty, value);
244 }

다음에 의해서 참조됨 : OnPreviewMouseLeftButtonDown().

◆ IsWindowDragEnabled

bool Dreamine.UI.Wpf.Controls.DreamineImage.IsWindowDragEnabled
getset

마우스 드래그로 상위 창을 이동할지 가져오거나 설정합니다.

DreamineImage.cs 파일의 226 번째 라인에서 정의되었습니다.

227 {
228 get => (bool)GetValue(IsWindowDragEnabledProperty);
229 set => SetValue(IsWindowDragEnabledProperty, value);
230 }

다음에 의해서 참조됨 : OnMouseMove().

◆ Source

ImageSource? Dreamine.UI.Wpf.Controls.DreamineImage.Source
getset

표시할 기본 이미지 소스를 가져오거나 설정합니다.

DreamineImage.cs 파일의 170 번째 라인에서 정의되었습니다.

171 {
172 get => (ImageSource?)GetValue(SourceProperty);
173 set => SetValue(SourceProperty, value);
174 }

다음에 의해서 참조됨 : DreamineImage().

◆ Stretch

Stretch Dreamine.UI.Wpf.Controls.DreamineImage.Stretch
getset

이미지가 사용 가능한 영역을 채우는 방식을 가져오거나 설정합니다.

DreamineImage.cs 파일의 254 번째 라인에서 정의되었습니다.

255 {
256 get => (Stretch)GetValue(StretchProperty);
257 set => SetValue(StretchProperty, value);
258 }

이 클래스에 대한 문서화 페이지는 다음의 파일로부터 생성되었습니다.: