![]() |
|
#1
|
||||
|
||||
![]() Есть цвет определённого пиксела на экране. Как мне относительно этого пиксела найти пикселы на экране у которых цвет не сильно отличается от данного, но разумеется оличается??????????
|
#2
|
||||
|
||||
![]() 1. Разложить цвет на R,G и B составляющие (shr, and).
2. Пробегаться по всем пикселам (лучше всего юзать Scanline). 3. Ставишь Код:
(abs(aR-bR)<10)and(abs(aG-bG)<10)and(abs(aB-bB)<10) 4. делаешь что хочешь. Оставайтесь хорошими людьми... VK id2634397, ds [at] phoenix [dot] dj |
#3
|
||||
|
||||
![]() А можно более чёткий пример пожалуйста!!!
|
#4
|
|||
|
|||
![]() Код:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); var i, j: Byte; aR, aG, aB: Byte; bR, bG, bB: Byte; NeSilOtlich:Byte; x1,x2,y1,y2:integer; begin Image2.Picture:=nil; NeSilOtlich:=15; aR:=GetRValue(Image1.Canvas.Pixels[x,y]); aG:=GetGValue(Image1.Canvas.Pixels[x,y]); aB:=GetBValue(Image1.Canvas.Pixels[x,y]); x1:=1; y1:=1; x2:=x1+8; y2:=8; for i:=1 to Image1.Width do for j:=1 to Image1.Height do begin bR:=GetRValue(Image1.Canvas.Pixels[i,j]); bG:=GetGValue(Image1.Canvas.Pixels[i,j]); bB:=GetBValue(Image1.Canvas.Pixels[i,j]); if (abs(aR-bR)<NeSilOtlich)and(abs(aG-bG)<NeSilOtlich)and(abs(aB-bB)<NeSilOtlich) then begin Image2.Canvas.Brush.Color:=RGB(bR,bG,bB); Image2.Canvas.Rectangle(x1,y1,x2,y2); if x1+50<image2.Width then x1:=x1+8 else Begin x1:=1; y1:=y1+8; y2:=y2+8; end; x2:=x1+8; end; end; end; |