찾다
웹 프론트엔드PS 튜토리얼Photoshop 스타일 각도 및 높이 선택기 컨트롤

Photoshop样式的角度和高度选择器控件

Photoshop样式的角度和高度选择器控件

소개

Adobe Photoshop에는 그림자, 경사 및 릴리프와 같은 특수 효과를 설정하기 위한 두 가지 매우 전문적인 컨트롤이 있습니다. 하나는 각도 선택기이고 다른 하나는 각도 및 높이 선택기입니다(위 이미지 참조).

이 기사에서는 독자가 Photoshop에서 이 두 컨트롤의 모양과 동작을 모방하기 위해 두 개의 사용자 정의 컨트롤을 만들도록 안내합니다.

기초지식 - 수학

피타고라스 정리

(즉, 피타고라스 정리, 원문을 존중하기 위해 이하 피타고라스 정리라고 합니다. 조금 복잡하긴 하지만 — —Nobi's note)

피타고라스의 정리를 이용하면 직각삼각형의 빗변(가장 긴 변)을 계산할 수 있습니다. 계산식은 Photoshop样式的角度和高度选择器控件 입니다. 이런 식으로 빗변 c는 Photoshop样式的角度和高度选择器控件 과 같습니다.

단위원

다음 작업은 각도와 원에 관한 것이므로 먼저 단위원의 형태를 익히는 것이 도움이 됩니다. 단위원은 중심이 (0,0)이고 반지름이 1인 원입니다. 일반 그리드(캔버스 참조 - Nobi의 메모)에서는 0도(좌표)가 (1,0)(오른쪽) 지점에서 시작하여 시계 반대 방향으로 증가합니다. 따라서 90도는 (0,1), 180도는 (-1,0), 270도는 (0,-1), 마지막으로 360도는 0점과 일치합니다.

삼각 함수

여기에서는 sin, cos 및 tan(사인, 코사인 및 탄젠트 - Nobi Note)의 세 가지 기본 삼각 함수만 알면 됩니다. SOH-CAH-TOA(주석 +)를 기억하면 (직각) 삼각형의 사인은 빗변에 대한 반대쪽의 비율과 같고, 코사인은 인접한 변의 비율과 같다는 것을 알 수 있습니다 빗변에 대한 접선은 대변과 인접 변의 비율과 같습니다.

마찬가지로, 우리는 역삼각 함수가 미지의 각도를 계산하는 데 사용된다는 것을 알고 있습니다.

주석+:

SOH-CAH-TOA는 외국인들이 삼각함수를 외울 때 사용하는 공식입니다. 그 중 O는 대변(대변), H는 빗변(빗변), A는 인접변입니다.

SOH: 사인 = 반대 ¼ 빗변

CAH: 코사인 = 인접 ¼ 빗변

TOA: 접선 = 반대 ¼ 인접

공통 함수

우리가 만드는 사용자 정의 컨트롤에는 다음 두 가지 중요한 함수(메서드)가 사용됩니다.

  • 함수는 각도와 반경을 매개변수로 받고 특정 원점 주위의 각도를 반환합니다. 대응점 위치. (간단히 말하면 각도를 점으로 변환해줍니다)

  • 점(X, Y)을 Parameter로 하여 가장 잘 어울리는 각도를 찾아 반대말을 완성하는 함수입니다.

첫 번째 기능은 더 간단합니다.


private PointF DegreesToXY(float degrees, float radius, Point origin)  
{  
  PointF xy = new PointF();  
  double radians = degrees * Math.PI / 180.0;  
  xy.X = (float)Math.Cos(radians) * radius + origin.X;  
  xy.Y = (float)Math.Sin(-radians) * radius + origin.Y;  
  return xy;  
}


먼저 각도를 라디안으로 변환해야 합니다. 일반적으로 단위원만 공부하면 됩니다.

Photoshop样式的角度和高度选择器控件

이 함수는 각도와 반경을 알고 삼각 함수를 사용하여 X와 Y 값을 계산한 다음 주어진 원점의 초기 좌표를 추가하기만 하면 됩니다.

또한 함수 코드에 Y 구성 요소의 음수 값이 사용된다는 점에 유의해야 합니다. 이는 컴퓨터 모니터의 그리드가 거꾸로 되어 있기 때문입니다(아래쪽이 양수임).

두 번째 함수의 기능은 사용자가 컨트롤을 클릭한 점 위치를 해당 각도 값으로 변환하는 것입니다. 몇 가지를 추가하는 것에 대해 생각해야 하기 때문에 이것은 조금 더 까다롭습니다. 기사의 길이가 제한되어 있기 때문에 코드의 일부를 여기에 게시했습니다:


private float XYToDegrees(Point xy, Point origin)  
{  
  double angle = 0.0;  
  if (xy.Y  origin.X)  
    {  
      angle = (double)(xy.X - origin.X) / (double)(origin.Y - xy.Y);  
      angle = Math.Atan(angle);  
      angle = 90.0 - angle * 180.0 / Math.PI;  
    }  
    else if (xy.X  origin.Y)  
  {  
    //如此这般  
  }  
  if (angle > 180) angle -= 360; //控制角度范围  
  return (float)angle;  
}


이 함수는 주로 기사의 위치를 ​​결정합니다. 사분면을 확인하여 중심점을 기준으로 마우스를 이동합니다. 사분면을 알고 나면 삼각함수(아크탄젠트)를 사용하여 각도를 계산할 수 있습니다.

각도가 180도보다 크면 360도를 뺍니다. 이는 Photoshop과 동일하며 -180도에서 180도 사이에서 각도를 제어합니다. 물론 이 단계를 수행할 필요는 없습니다. 이 코드 줄을 추가하지 않고도 컨트롤을 사용할 수 있습니다.

컨트롤 만들기

그리기 컨트롤

두 컨트롤의 배경은 동일합니다.

  • 펜으로 바깥쪽 그리기 너비가 2인 원

  • 은 불투명도가 40%(약 100)인 흰색으로 채워집니다.

  • 컨트롤의 중앙은 3x3 픽셀 정사각형


아아아아아


注意SmoothMode属性。在绘制圆圈时将该属性设置为AntiAlias(抗锯齿),这样看起来既光滑又专业。但是如果画正方形时也用抗锯齿,就会显得模糊难看,所以将SmoothMode设置为HighSpeed(高速),这样画出的正方形边缘整齐犀利。 

根据控件不同,光标也有不同绘制方法。角度选择器比较简单,只需要从圆心到DegreesToXY函数返回的点连一条直线即可。角度与高度选择器则是在这点上绘制一个1x1的矩形,然后在周围绘制一个十字型光标。

处理用户点击

多亏我们有了XYToDegrees函数,处理用户点击变得特别简单。为了让我们的控件用起来和Photoshop一模一样,我们需要设置MouseDown和MouseMove事件。这样,各项数值将实时更新。这里是一个附注函数的代码:


private int findNearestAngle(Point mouseXY)  
{  
  int thisAngle = (int)XYToDegrees(mouseXY, origin);  
  if (thisAngle != 0)  
    return thisAngle;  
  else  
    return -1;  
}


 高度控件需要额外的处理,就是找到中心点和鼠标点击点的距离:


private int findAltitude(Point mouseXY)  
{  
  float distance = getDistance(mouseXY, origin);  
  int alt = 90 - (int)(90.0f * (distance / origin.X));  
  if (alt <p><br></p><p> 在Photoshop中,选择点(指鼠标点击点)在圆心时,高度为90,在边缘处则为0。这样,我们可以通过找到点击点到圆心距离和半径高度比值来计算出高度。然后,用90减去该值(实际上是按90到0来翻转一下)。</p><p>自定义事件</p><p>为了让我们的自定义控件更加专业,需要控件能够在数值发生变化时以编程方式进行提醒。这就是我们要设置事件的原因。</p><p>例如,像这样给角度变化添加一个事件:</p><p><br></p><pre class="brush:php;toolbar:false">public delegate void AngleChangedDelegate();  
public event AngleChangedDelegate AngleChanged;


然后,我们要做的就是每次变更Angle属性时,调用AngleChanged()(需要先判断是否为null)。

限制与改进

闪烁

没有闪烁!只需要在制作控件时设置DoubleBuffered属性为true,.NET Framework 2.0会处理剩下的工作,保证控件能流畅的重绘。

尺寸

因为控件使用基于半径(圆)的数学计算方法,因此需要保证控件的长度和宽度相等。

颜色

我是照着Photoshop的样子来的,所以并没包含背景颜色、外圈颜色这些属性。但是,浏览下代码,你会发现改成你喜欢的颜色或者让颜色可以动态修改并不是什么难事。

结论

我建议你下载项目文件(或者至少下载DEMO),这样你可以看到这俩控件用起来很爽。

协议

本文及有关代码、程序均基于CPOL(Codeproject Open License)协议。

更多Photoshop样式的角度和高度选择器控件 相关文章请关注PHP中文网!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
고급 Photoshop 튜토리얼 : 마스터 수정 및 합성고급 Photoshop 튜토리얼 : 마스터 수정 및 합성Apr 17, 2025 am 12:10 AM

Photoshop의 고급 사진 편집 및 합성 기술에는 다음이 포함됩니다. 1. 기본 작업에 레이어, 마스크 및 조정 레이어 사용; 2. 이미지 픽셀 값을 사용하여 사진 편집 효과를 달성하십시오. 3. 복잡한 합성을 위해 여러 층과 마스크를 사용하십시오. 4. "액화"도구를 사용하여 얼굴 특징을 조정하십시오. 5. "주파수 분리"기술을 사용하여 섬세한 사진 편집을 수행하면 이러한 기술은 이미지 처리 수준을 향상시키고 전문적인 수준의 효과를 달성 할 수 있습니다.

그래픽 디자인에 Photoshop 사용 : 브랜딩 등그래픽 디자인에 Photoshop 사용 : 브랜딩 등Apr 16, 2025 am 12:02 AM

브랜드 디자인에 Photoshop을 사용하는 단계에는 다음이 포함됩니다. 1. 펜 도구를 사용하여 기본 모양을 그리며, 2. 레이어 스타일을 통해 그림자와 하이라이트 추가, 3. 색상과 세부 사항 조정, 4. 스마트 객체 및 동작을 사용하여 다양한 버전의 디자인을 자동으로 생성하십시오. Photoshop은 디자이너가 레이어와 마스크의 유연성으로 브랜드 요소를 만들고 최적화하여 간단한 로고에서 복잡한 브랜딩 안내서에 이르기까지 디자인의 일관성과 전문성을 보장합니다.

Photoshop의 구독 모델 : 돈을 위해 얻는 것Photoshop의 구독 모델 : 돈을 위해 얻는 것Apr 15, 2025 am 12:17 AM

Photoshop의 구독 모델은 구매할 가치가 있습니다. 1) 사용자는 최신 버전에 액세스하고 언제든지 장치에서 사용할 수 있습니다. 2) 가입비는 낮으며 지속적인 업데이트 및 기술 지원이 제공됩니다. 3) 신경 필터와 같은 고급 기능은 복잡한 이미지 처리에 사용될 수 있습니다. 장기 비용이 높지만 편의성과 기능 업데이트는 전문 사용자에게 가치가 있습니다.

Photoshop : 무료 평가판 및 할인 옵션 조사Photoshop : 무료 평가판 및 할인 옵션 조사Apr 14, 2025 am 12:06 AM

가장 경제적 인 방식으로 Photoshop에 액세스 할 수 있습니다. 1. 7 일 무료 평가판으로 소프트웨어 기능을 경험하십시오. 2. 계절적 프로모션뿐만 아니라 학생 또는 교사 할인을 찾으십시오. 3. 타사 웹 사이트에서 쿠폰을 사용하십시오. 4. Adobe CreativeCloud의 월별 또는 연간 계획을 구독하십시오.

디자이너를위한 Photoshop : 시각적 개념 만들기디자이너를위한 Photoshop : 시각적 개념 만들기Apr 13, 2025 am 12:09 AM

다음 단계를 통해 Photoshop에서 시각적 개념을 만들 수 있습니다. 1. 새 문서 만들기, 2. 배경 레이어 추가, 2. 브러시 도구를 사용하여 기본 모양을 그리기 위해, 4. 색상과 밝기 조정, 5. 텍스트 및 그래픽 추가, 6. 로컬 편집에 마스크 사용, 필터 효과를 적용하는 데 도움이됩니다.이 단계는 스크래치에서 완전히 시각적 인 작업을 구축 할 수 있도록 도와줍니다.

Photoshop은 무료입니까? 구독 계획 이해Photoshop은 무료입니까? 구독 계획 이해Apr 12, 2025 am 12:11 AM

Photoshop은 무료가 아니지만 저렴한 비용 또는 무료로 사용하는 몇 가지 방법이 있습니다. 1. 무료 시험 기간은 7 일 이며이 기간 동안 모든 기능을 경험할 수 있습니다. 2. 학생 및 교사 할인은 비용을 절반으로 줄일 수 있으며 학교 증거가 필요합니다. 3. CreativeCloud 패키지는 전문 사용자에게 적합하며 다양한 Adobe 도구가 포함되어 있습니다. 4. Photoshopelements와 Lightroom은 기능이 적지 만 가격이 낮은 저렴한 대안입니다.

Photoshop의 가치 : 기능에 대한 비용의 무게를 측정합니다Photoshop의 가치 : 기능에 대한 비용의 무게를 측정합니다Apr 11, 2025 am 12:02 AM

Photoshop은 강력한 기능과 광범위한 애플리케이션 시나리오를 제공하기 때문에 투자 가치가 있습니다. 1) 핵심 기능에는 이미지 편집, 레이어 관리, 특수 효과 생산 및 색상 조정이 포함됩니다. 2) 전문 디자이너 및 사진 작가에게 적합하지만 아마추어는 김프와 같은 대안을 고려할 수 있습니다. 3) 높은 일회성 지출을 피하기 위해 필요에 따라 AdobecreativeCloud를 구독 할 수 있습니다.

Photoshop의 핵심 목적 : 창의적인 이미지 디자인Photoshop의 핵심 목적 : 창의적인 이미지 디자인Apr 10, 2025 am 09:29 AM

창의적인 이미지 디자인에서 Photoshop의 핵심 사용은 강력한 기능과 유연성입니다. 1) 디자이너는 레이어, 마스크 및 필터를 통해 창의성을 시각적 현실로 변환 할 수 있습니다. 2) 기본 사용에는 자르기, 크기 조정 및 색 보정이 포함됩니다. 3) 레이어 스타일, 블렌드 모드 및 스마트 객체와 같은 고급 사용법은 복잡한 효과를 만들 수 있습니다. 4) 일반적인 실수에는 부적절한 계층 관리 및 필터 사용 과도한 사용이 포함되며, 레이어를 구성하고 필터를 합리적으로 사용하여 해결할 수 있습니다. 5) 성능 최적화 및 모범 사례에는 계층의 합리적 사용, 파일의 정기 저축 및 바로 가기 키 사용이 포함됩니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 채팅 명령 및 사용 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

ZendStudio 13.5.1 맥

ZendStudio 13.5.1 맥

강력한 PHP 통합 개발 환경

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

에디트플러스 중국어 크랙 버전

에디트플러스 중국어 크랙 버전

작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

안전한 시험 브라우저

안전한 시험 브라우저

안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구