mono에서 제공하는 gtk 씨샵 구현을 이용하여 gui를 표현할 수 있다.


이 중 stroke는 다음과 같은 설명이 나온다.


A drawing operator that strokes the current path according to the current line width, line join, line cap, and dash settings.


즉 현재 설정한 선 넓이, 선 조인 형식, 선 마침 형식이나 대시 셋팅을 그려주는데

주의 할 것은 현재 그리기 패스에 설정된 위 내용들이 context에서 clear 한다는 사실.


StrokePreserve로 그려주면 설정들이 유지된다.


저작자 표시
신고

'Programming > Csharp' 카테고리의 다른 글

Stroke, StrokePreserve 차이점  (0) 2015.07.04
Equals, == 연산자 재정의 참고  (0) 2015.07.04
Posted by 오라오라
TAG c#, csharp, GTK, Stroke

댓글을 달아 주세요

https://msdn.microsoft.com/ko-kr/library/ms173147(v=vs.90).aspx


우선 Equals의 일치 비교는 값 비교이며

참조 일치의 비교는 ReferenceEquals임을 알고 있어야 한다.



@@ MSDN____

Equals의 새 구현은 Equals의 모든 규칙을 따라야 합니다.

  • x.Equals(x)는 true를 반환합니다.

  • x. Equals (y)와 y. Equals (x)의 반환 값은 같습니다.

  • (x. Equals (y) && y. Equals (z))가 true를 반환하는 경우 x. Equals (z)도 true를 반환합니다.

  • x 및 y가 참조하는 개체가 수정되지 않는 한 x. Equals (y)를 계속 호출해도 같은 값이 반환됩니다.

  • x. Equals (null)은 false를 반환합니다. 이는 nullable이 아닌 값에만 해당합니다. 자세한 내용은 nullable 형식(C# 프로그래밍 가이드)을 참조하십시오.

Equals의 새 구현은 예외를 throw하지 말아야 합니다


== 연산자는 참조 일치 비교를 수행하므로 반드시 재정의할 필요는 없다.

@@ MSDN___

== 연산자를 오버로드할 때는 참조 일치를 검사하기 위해 (a == b)(a == null) 또는 (b == null)을 사용하는 잘못을 범하기 쉽습니다. 이렇게 하면 오버로드된 == 연산자를 대신 호출하여 무한 루프가 발생합니다. 무한 루프를 방지하려면 ReferenceEquals를 사용하거나 형식을 Object로 캐스팅해야 합니다

저작자 표시
신고

'Programming > Csharp' 카테고리의 다른 글

Stroke, StrokePreserve 차이점  (0) 2015.07.04
Equals, == 연산자 재정의 참고  (0) 2015.07.04
Posted by 오라오라

댓글을 달아 주세요

C#에서는 기본적으로 관리되지 않는 메모리 조작은 할 수 없게 되어있는데

다음과 같은 옵션을 체크하면 포인터와 같이 메모리를 조작할 수 있다.




이 옵션 없이 unsafe 지시어를 사용하면 빌드 오류가 발생한다.




소스코드를 보면

unsafe 키워드 스코프 안에서

주소 및 포인터 사용을 하고 있다.


그럼 fixed 지시어는 무엇일까?


클래스가 인스턴스화 되면 CLR에 의해 언제든지 메모리가 이동될 수 있는데

이렇게 고정되지 않은 인스턴스를 포인터로 받아 사용하게 되면

언제든지 실행 중에 오류가 발생할 수 있다.


따라서 fixed 지시어를 사용하여 이 스코프 안에 코드를 넣으면 해당 코드에 

들어간 변수 및 객체는 가비지 콜렉팅이 발생할 때 주소 재배치 대상이 아니게 된다.


상세한 내용은 MSDN 참조


unsafe

fixed

저작자 표시
신고

'Programming > Etc' 카테고리의 다른 글

C# - unsafe와 fixed  (0) 2015.02.03
Posted by 오라오라

댓글을 달아 주세요

티스토리 툴바