VERSION 5.00
Begin VB.Form ExportForm 
   AutoRedraw      =   -1  'True
   Caption         =   "Вывод яркостей точек изображения в таблицу Excel."
   ClientHeight    =   5910
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   9645
   Icon            =   "CT-ExportForm.frx":0000
   LinkTopic       =   "Form1"
   ScaleHeight     =   394
   ScaleMode       =   3  'Пиксель
   ScaleWidth      =   643
   StartUpPosition =   3  'Windows Default
   Begin VB.Timer Timer2 
      Interval        =   180
      Left            =   4920
      Top             =   2280
   End
   Begin VB.Timer Timer1 
      Interval        =   200
      Left            =   4680
      Top             =   2160
   End
   Begin VB.OptionButton Option6 
      Height          =   255
      Left            =   120
      TabIndex        =   25
      Top             =   2205
      Width           =   240
   End
   Begin VB.OptionButton Option5 
      Caption         =   "Максимальное значение"
      Height          =   255
      Left            =   120
      TabIndex        =   24
      Top             =   1935
      Width           =   3135
   End
   Begin VB.OptionButton Option4 
      Caption         =   "Среднее арифметическое значение"
      Height          =   255
      Left            =   120
      TabIndex        =   23
      Top             =   1665
      Width           =   3135
   End
   Begin VB.OptionButton Option3 
      Caption         =   "Синюю"
      ForeColor       =   &H00FF0000&
      Height          =   255
      Left            =   120
      TabIndex        =   22
      Top             =   1380
      Width           =   1575
   End
   Begin VB.OptionButton Option2 
      Caption         =   "Зелёную"
      ForeColor       =   &H00008000&
      Height          =   255
      Left            =   120
      TabIndex        =   21
      Top             =   1095
      Width           =   1575
   End
   Begin VB.OptionButton Option1 
      Caption         =   "Красную составляющую"
      ForeColor       =   &H000000FF&
      Height          =   480
      Left            =   120
      TabIndex        =   20
      Top             =   600
      Width           =   1890
   End
   Begin VB.TextBox Text6 
      Height          =   285
      Left            =   3720
      Locked          =   -1  'True
      MousePointer    =   1  'Указатель
      TabIndex        =   19
      Top             =   3270
      Width           =   615
   End
   Begin VB.TextBox Text5 
      Height          =   285
      Left            =   7680
      Locked          =   -1  'True
      MousePointer    =   1  'Указатель
      TabIndex        =   18
      Top             =   600
      Width           =   615
   End
   Begin VB.TextBox Text4 
      Height          =   285
      Left            =   8040
      MousePointer    =   1  'Указатель
      TabIndex        =   17
      Top             =   1200
      Width           =   615
   End
   Begin VB.TextBox Text3 
      Height          =   285
      Left            =   7080
      MousePointer    =   1  'Указатель
      TabIndex        =   16
      Top             =   1080
      Width           =   615
   End
   Begin VB.TextBox Text2 
      Height          =   285
      Left            =   4680
      MousePointer    =   99  'Custom
      TabIndex        =   15
      Top             =   3720
      Width           =   495
   End
   Begin VB.TextBox Text1 
      Height          =   285
      Left            =   4560
      MousePointer    =   1  'Указатель
      TabIndex        =   14
      Top             =   2880
      Width           =   495
   End
   Begin VB.HScrollBar HScroll4 
      Height          =   255
      Left            =   0
      TabIndex        =   13
      Top             =   5280
      Visible         =   0   'False
      Width           =   2295
   End
   Begin VB.VScrollBar VScroll4 
      Height          =   2535
      Left            =   2280
      TabIndex        =   12
      Top             =   2760
      Visible         =   0   'False
      Width           =   255
   End
   Begin VB.CheckBox Check1 
      Caption         =   "Заливка цветом фона ячеек таблицы (Значительно замедляет вывод в таблицу)"
      Height          =   660
      Left            =   2145
      TabIndex        =   10
      ToolTipText     =   "Фон каждой ячейки таблицы окрасится в цвет соответствующей точки"
      Top             =   870
      Value           =   1  'Отмечено
      Width           =   3720
   End
   Begin VB.VScrollBar VScroll3 
      Height          =   3135
      LargeChange     =   10
      Left            =   5280
      Max             =   100
      Min             =   1
      TabIndex        =   9
      Top             =   2160
      Value           =   1
      Width           =   255
   End
   Begin VB.HScrollBar HScroll3 
      Height          =   255
      LargeChange     =   10
      Left            =   5880
      Max             =   100
      Min             =   1
      TabIndex        =   8
      Top             =   1560
      Value           =   1
      Width           =   3495
   End
   Begin VB.HScrollBar HScroll2 
      Height          =   255
      LargeChange     =   10
      Left            =   5880
      Max             =   100
      Min             =   1
      TabIndex        =   7
      Top             =   1800
      Value           =   1
      Width           =   3495
   End
   Begin VB.VScrollBar VScroll2 
      Height          =   3135
      LargeChange     =   10
      Left            =   5520
      Max             =   100
      Min             =   1
      TabIndex        =   6
      Top             =   2160
      Value           =   1
      Width           =   255
   End
   Begin VB.PictureBox Picture4 
      Appearance      =   0  'Плоска
      AutoRedraw      =   -1  'True
      BackColor       =   &H00FF8080&
      BorderStyle     =   0  'Нет
      ForeColor       =   &H80000008&
      Height          =   2535
      Left            =   0
      ScaleHeight     =   169
      ScaleMode       =   3  'Пиксель
      ScaleWidth      =   153
      TabIndex        =   5
      Top             =   2760
      Visible         =   0   'False
      Width           =   2295
      Begin VB.PictureBox Picture5 
         Appearance      =   0  'Плоска
         AutoRedraw      =   -1  'True
         BackColor       =   &H00808080&
         BorderStyle     =   0  'Нет
         FillStyle       =   0  'Заливка
         ForeColor       =   &H80000008&
         Height          =   2295
         Left            =   120
         ScaleHeight     =   153
         ScaleMode       =   3  'Пиксель
         ScaleWidth      =   137
         TabIndex        =   11
         Top             =   120
         Visible         =   0   'False
         Width           =   2055
      End
   End
   Begin VB.HScrollBar HScroll1 
      Height          =   255
      Left            =   5880
      TabIndex        =   4
      Top             =   5280
      Width           =   3495
   End
   Begin VB.VScrollBar VScroll1 
      Height          =   3135
      Left            =   9360
      TabIndex        =   3
      Top             =   2160
      Width           =   255
   End
   Begin VB.PictureBox Picture2 
      Appearance      =   0  'Плоска
      AutoRedraw      =   -1  'True
      BackColor       =   &H0080C0FF&
      ForeColor       =   &H80000008&
      Height          =   3135
      Left            =   5880
      ScaleHeight     =   207
      ScaleMode       =   3  'Пиксель
      ScaleWidth      =   231
      TabIndex        =   1
      Top             =   2160
      Visible         =   0   'False
      Width           =   3495
      Begin VB.PictureBox Picture3 
         Appearance      =   0  'Плоска
         AutoRedraw      =   -1  'True
         AutoSize        =   -1  'True
         BackColor       =   &H80000005&
         BorderStyle     =   0  'Нет
         ForeColor       =   &H80000008&
         Height          =   2895
         Left            =   120
         MousePointer    =   2  'Пересечение
         ScaleHeight     =   193
         ScaleMode       =   3  'Пиксель
         ScaleWidth      =   217
         TabIndex        =   2
         Top             =   120
         Visible         =   0   'False
         Width           =   3255
         Begin VB.Shape Vydelenie 
            BorderColor     =   &H000000FF&
            Height          =   975
            Left            =   720
            Top             =   840
            Width           =   1335
         End
      End
   End
   Begin VB.PictureBox Picture1 
      Appearance      =   0  'Плоска
      AutoRedraw      =   -1  'True
      BackColor       =   &H80000005&
      BorderStyle     =   0  'Нет
      ForeColor       =   &H80000008&
      Height          =   390
      Left            =   1320
      Picture         =   "CT-ExportForm.frx":75CF
      ScaleHeight     =   26
      ScaleMode       =   3  'Пиксель
      ScaleWidth      =   466
      TabIndex        =   0
      Top             =   120
      Visible         =   0   'False
      Width           =   6990
   End
   Begin VB.Line Line18 
      BorderColor     =   &H80000014&
      X1              =   640
      X2              =   632
      Y1              =   72
      Y2              =   80
   End
   Begin VB.Line Line17 
      BorderColor     =   &H80000010&
      BorderWidth     =   2
      X1              =   640
      X2              =   632
      Y1              =   80
      Y2              =   88
   End
   Begin VB.Line Line16 
      BorderColor     =   &H80000014&
      X1              =   640
      X2              =   632
      Y1              =   96
      Y2              =   104
   End
   Begin VB.Line Line15 
      BorderColor     =   &H80000010&
      BorderWidth     =   2
      X1              =   640
      X2              =   632
      Y1              =   104
      Y2              =   112
   End
   Begin VB.Line Line14 
      BorderColor     =   &H80000014&
      X1              =   640
      X2              =   632
      Y1              =   112
      Y2              =   120
   End
   Begin VB.Line Line13 
      BorderColor     =   &H80000010&
      BorderWidth     =   2
      X1              =   640
      X2              =   632
      Y1              =   120
      Y2              =   128
   End
   Begin VB.Line Line12 
      BorderColor     =   &H00FFFFFF&
      BorderWidth     =   2
      X1              =   176
      X2              =   192
      Y1              =   240
      Y2              =   240
   End
   Begin VB.Line Line11 
      BorderColor     =   &H00FFFFFF&
      BorderWidth     =   2
      X1              =   176
      X2              =   192
      Y1              =   208
      Y2              =   208
   End
   Begin VB.Label Label22 
      AutoSize        =   -1  'True
      BackColor       =   &H80000005&
      Caption         =   "0,114"
      ForeColor       =   &H00C00000&
      Height          =   195
      Left            =   3960
      MousePointer    =   3  'I-Луч
      TabIndex        =   47
      Top             =   2220
      Width           =   405
   End
   Begin VB.Label Label21 
      AutoSize        =   -1  'True
      BackColor       =   &H00FFC0C0&
      BackStyle       =   0  'Прозрачно
      Caption         =   " + Син.·"
      Height          =   195
      Left            =   3360
      TabIndex        =   46
      ToolTipText     =   "Красный·0,299 + Зелёный·0,587 + Синий·0,114 - вклады в яркость в практике для телевизионного сигнала"
      Top             =   2220
      Width           =   555
   End
   Begin VB.Label Label20 
      AutoSize        =   -1  'True
      BackColor       =   &H80000005&
      Caption         =   "0,587"
      ForeColor       =   &H00004000&
      Height          =   195
      Left            =   2880
      MousePointer    =   3  'I-Луч
      TabIndex        =   45
      Top             =   2220
      Width           =   405
   End
   Begin VB.Label Label19 
      AutoSize        =   -1  'True
      BackColor       =   &H00FFC0C0&
      BackStyle       =   0  'Прозрачно
      Caption         =   " + Зел.·"
      Height          =   195
      Left            =   2280
      TabIndex        =   44
      ToolTipText     =   "Красный·0,299 + Зелёный·0,587 + Синий·0,114 - вклады в яркость в практике для телевизионного сигнала"
      Top             =   2220
      Width           =   555
   End
   Begin VB.Label Label18 
      AutoSize        =   -1  'True
      BackColor       =   &H80000005&
      Caption         =   "0,299"
      ForeColor       =   &H000000C0&
      Height          =   195
      Left            =   1800
      MousePointer    =   3  'I-Луч
      TabIndex        =   43
      Top             =   2220
      Width           =   405
   End
   Begin VB.Label Label17 
      AutoSize        =   -1  'True
      BackStyle       =   0  'Прозрачно
      Caption         =   "Яркость = Красн.·"
      Height          =   195
      Left            =   375
      TabIndex        =   42
      ToolTipText     =   "Красный·0,299 + Зелёный·0,587 + Синий·0,114 - вклады в яркость в практике для телевизионного сигнала"
      Top             =   2220
      Width           =   1380
   End
   Begin VB.Image Image15 
      Height          =   315
      Left            =   2820
      Top             =   555
      Width           =   3015
   End
   Begin VB.Image Image14 
      Height          =   315
      Left            =   2040
      Picture         =   "CT-ExportForm.frx":10441
      Top             =   5040
      Visible         =   0   'False
      Width           =   3015
   End
   Begin VB.Image Image13 
      Height          =   315
      Left            =   2040
      Picture         =   "CT-ExportForm.frx":10926
      Top             =   4680
      Visible         =   0   'False
      Width           =   3015
   End
   Begin VB.Label Label16 
      BackStyle       =   0  'Прозрачно
      Caption         =   "Яркость"
      Height          =   255
      Left            =   1800
      TabIndex        =   41
      Top             =   5640
      Width           =   1770
   End
   Begin VB.Label Label15 
      Alignment       =   2  'Центровка
      Appearance      =   0  'Плоска
      BorderStyle     =   1  'Фиксировано один
      Caption         =   "Яркость чёрно-белого изображения"
      ForeColor       =   &H80000008&
      Height          =   855
      Left            =   120
      TabIndex        =   40
      Top             =   600
      Visible         =   0   'False
      Width           =   1455
   End
   Begin VB.Label Label14 
      BackStyle       =   0  'Прозрачно
      Caption         =   "Синий"
      ForeColor       =   &H00C00000&
      Height          =   255
      Left            =   6585
      TabIndex        =   39
      Top             =   5640
      Width           =   1320
   End
   Begin VB.Label Label13 
      BackStyle       =   0  'Прозрачно
      Caption         =   "Зелёный"
      ForeColor       =   &H00008000&
      Height          =   255
      Left            =   5070
      TabIndex        =   38
      Top             =   5640
      Width           =   1515
   End
   Begin VB.Label Label12 
      BackStyle       =   0  'Прозрачно
      Caption         =   "Красный"
      ForeColor       =   &H000000FF&
      Height          =   255
      Left            =   3570
      TabIndex        =   37
      Top             =   5640
      Width           =   1470
   End
   Begin VB.Label Label11 
      BackStyle       =   0  'Прозрачно
      Caption         =   "Y:"
      Height          =   255
      Left            =   8760
      TabIndex        =   36
      Top             =   5640
      Width           =   855
   End
   Begin VB.Label Label10 
      BackStyle       =   0  'Прозрачно
      Caption         =   "X:"
      Height          =   255
      Left            =   7920
      TabIndex        =   35
      Top             =   5640
      Width           =   855
   End
   Begin VB.Label Label9 
      BackStyle       =   0  'Прозрачно
      Caption         =   "Масштаб"
      Height          =   255
      Left            =   120
      TabIndex        =   34
      Top             =   5640
      Width           =   1695
   End
   Begin VB.Line Line10 
      BorderColor     =   &H80000010&
      BorderWidth     =   2
      X1              =   168
      X2              =   0
      Y1              =   165
      Y2              =   165
   End
   Begin VB.Line Line9 
      BorderColor     =   &H80000014&
      BorderWidth     =   2
      X1              =   0
      X2              =   168
      Y1              =   168
      Y2              =   168
   End
   Begin VB.Label Label8 
      Alignment       =   1  'Правая привязка
      BackColor       =   &H00FFFFFF&
      BackStyle       =   0  'Прозрачно
      Caption         =   "до"
      ForeColor       =   &H80000008&
      Height          =   255
      Left            =   7575
      TabIndex        =   33
      Top             =   1200
      Width           =   420
   End
   Begin VB.Image Image12 
      Height          =   480
      Left            =   2640
      Picture         =   "CT-ExportForm.frx":10E2A
      Top             =   5400
      Visible         =   0   'False
      Width           =   480
   End
   Begin VB.Image Image11 
      Height          =   480
      Left            =   2880
      Picture         =   "CT-ExportForm.frx":11134
      Top             =   5400
      Visible         =   0   'False
      Width           =   480
   End
   Begin VB.Image Image10 
      Height          =   480
      Left            =   2280
      Picture         =   "CT-ExportForm.frx":1143E
      Top             =   5400
      Visible         =   0   'False
      Width           =   480
   End
   Begin VB.Label Label7 
      AutoSize        =   -1  'True
      Caption         =   "ВЫДЕЛЕННАЯ ОБЛАСТЬ :"
      Height          =   210
      Left            =   120
      TabIndex        =   32
      Top             =   2535
      Width           =   2565
   End
   Begin VB.Label Label6 
      AutoSize        =   -1  'True
      Caption         =   "ВЫВЕСТИ :"
      Height          =   210
      Left            =   120
      TabIndex        =   31
      Top             =   345
      Width           =   1125
   End
   Begin VB.Label Label5 
      BackStyle       =   0  'Прозрачно
      Caption         =   "Будет выве- дено"
      Height          =   735
      Left            =   3000
      TabIndex        =   30
      Top             =   3090
      Width           =   735
   End
   Begin VB.Label Label4 
      Alignment       =   1  'Правая привязка
      AutoSize        =   -1  'True
      BackStyle       =   0  'Прозрачно
      Caption         =   "до"
      ForeColor       =   &H80000008&
      Height          =   210
      Left            =   4020
      TabIndex        =   29
      Top             =   3750
      Width           =   420
   End
   Begin VB.Label Label3 
      Alignment       =   1  'Правая привязка
      AutoSize        =   -1  'True
      BackColor       =   &H00FFFFFF&
      BackStyle       =   0  'Прозрачно
      Caption         =   "Со строки"
      ForeColor       =   &H80000008&
      Height          =   315
      Left            =   3285
      TabIndex        =   28
      Top             =   2865
      Width           =   1125
   End
   Begin VB.Label Label2 
      Alignment       =   1  'Правая привязка
      AutoSize        =   -1  'True
      BackColor       =   &H00FFFFFF&
      BackStyle       =   0  'Прозрачно
      Caption         =   "Будет выведено"
      ForeColor       =   &H80000008&
      Height          =   315
      Left            =   5925
      TabIndex        =   27
      Top             =   630
      Width           =   1710
   End
   Begin VB.Label Label1 
      Alignment       =   1  'Правая привязка
      BackColor       =   &H00FFFFFF&
      BackStyle       =   0  'Прозрачно
      Caption         =   "Со столбца"
      Height          =   345
      Left            =   5910
      TabIndex        =   26
      Top             =   1080
      Width           =   1140
   End
   Begin VB.Image Image9 
      Height          =   135
      Left            =   8400
      Picture         =   "CT-ExportForm.frx":11748
      Top             =   675
      Width           =   420
   End
   Begin VB.Image Image8 
      Height          =   390
      Left            =   2520
      Picture         =   "CT-ExportForm.frx":1185A
      Top             =   5640
      Visible         =   0   'False
      Width           =   1950
   End
   Begin VB.Image Image7 
      Height          =   390
      Left            =   2520
      Picture         =   "CT-ExportForm.frx":11965
      Top             =   5400
      Visible         =   0   'False
      Width           =   1950
   End
   Begin VB.Image Image6 
      Appearance      =   0  'Плоска
      BorderStyle     =   1  'Фиксировано один
      Height          =   480
      Left            =   1275
      Picture         =   "CT-ExportForm.frx":11A91
      Top             =   75
      Visible         =   0   'False
      Width           =   7080
   End
   Begin VB.Line Line8 
      BorderColor     =   &H80000010&
      X1              =   139
      X2              =   380
      Y1              =   103
      Y2              =   103
   End
   Begin VB.Line Line7 
      BorderColor     =   &H80000014&
      X1              =   138
      X2              =   138
      Y1              =   37
      Y2              =   104
   End
   Begin VB.Line Line6 
      BorderColor     =   &H80000010&
      X1              =   136
      X2              =   136
      Y1              =   37
      Y2              =   105
   End
   Begin VB.Line Line5 
      BorderColor     =   &H80000014&
      X1              =   136
      X2              =   380
      Y1              =   105
      Y2              =   105
   End
   Begin VB.Line Line4 
      BorderColor     =   &H80000010&
      X1              =   140
      X2              =   380
      Y1              =   102
      Y2              =   102
   End
   Begin VB.Line Line3 
      BorderColor     =   &H80000014&
      X1              =   135
      X2              =   380
      Y1              =   106
      Y2              =   106
   End
   Begin VB.Line Line2 
      BorderColor     =   &H80000014&
      X1              =   139
      X2              =   139
      Y1              =   37
      Y2              =   103
   End
   Begin VB.Line Line1 
      BorderColor     =   &H80000010&
      X1              =   135
      X2              =   135
      Y1              =   37
      Y2              =   106
   End
   Begin VB.Image Image5 
      Height          =   360
      Left            =   7440
      Picture         =   "CT-ExportForm.frx":136BB
      Top             =   840
      Width           =   855
   End
   Begin VB.Shape Shape2 
      BackColor       =   &H00FFFFFF&
      BackStyle       =   1  'Непрозрачно
      BorderStyle     =   0  'Прозрачно
      Height          =   975
      Left            =   5880
      Top             =   585
      Width           =   3495
   End
   Begin VB.Image Image4 
      Height          =   855
      Left            =   4320
      Picture         =   "CT-ExportForm.frx":13A3D
      Top             =   3000
      Width           =   360
   End
   Begin VB.Shape Shape1 
      BackColor       =   &H00FFFFFF&
      BackStyle       =   1  'Непрозрачно
      BorderStyle     =   0  'Прозрачно
      Height          =   2535
      Left            =   2880
      Top             =   2760
      Width           =   2415
   End
   Begin VB.Image Image3 
      Height          =   375
      Left            =   6360
      ToolTipText     =   "Справка о настройках в этом окне"
      Top             =   120
      Width           =   1935
   End
   Begin VB.Image Image2 
      Height          =   375
      Left            =   3840
      ToolTipText     =   "Отменить и вернуться к открытию файлов"
      Top             =   120
      Width           =   1935
   End
   Begin VB.Image Image1 
      Height          =   375
      Left            =   1320
      ToolTipText     =   "Непосредственно экспорт в таблицу"
      Top             =   120
      Width           =   1935
   End
End
Attribute VB_Name = "ExportForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
Dim bfOffbitsMinus As Long
Dim Bayty_Do_Stroki As Long
Dim Uvel As Long
Dim pervStrokaPlus2 As Long
Dim pervStolbPlus2 As Long
Dim Bayty_Do_Stroki0 As Long
Dim Bayty_Do_Stroki1 As Long
Dim Bayty_Do_Stroki2 As Long
Dim Rezerv_X  As Long
Dim Rezerv_Y As Long
Dim Nachalo_Pryamougolnika_X As Long
Dim Nachalo_Pryamougolnika_Y As Long
Dim Pervoe_Nazhatie As Boolean
Dim Red As Integer
Dim Green As Integer
Dim Blue As Integer
Dim Blizayshiy_Cvet As Long
Dim Minimum_Cvetov As Long
Dim Minimum_Nomer_Cveta As Long

Dim КраснаяСост As Byte
Dim ЗелёнаяСост As Byte
Dim СиняяСост As Byte

Dim Абсцисса As Long
Dim Ордината As Long
Dim Ордината2 As Long
Dim ПоправкаКАбсциссе As Long
Dim biHeightPlus1 As Long
Dim PervStrokaMinus1 As Long
Dim PervStolbMinus1 As Long
Dim ШиринаИндикатора As Single
Dim МножительИндикатора As Single
Dim NumberOrNot As Boolean
Dim ЧислоРазделителей As Integer

'Для изменение цвета рамки выделения:
Dim ПроявлениеЗатухание As Boolean
Dim ЦветВыделенияК As Integer

Sub ОтрисовкаИзображения()
Picture3.Cls
'ОтсчётСекунд = Minute(Now) * 60 + Second(Now)
Select Case bfType
    Case "BM", "BA"
     ШиринаИндикатора = ШиринаИндикатора - 349 '350
     '466 вся длина, первая часть отрисована 466*3/4=350 стобцов точек
     МножительИндикатора = 116 / biHeight
     '466-350 = 116 ещё остаётся
     Select Case biBitCount
      Case 8
       k = -1
       If biClrUsed = 0 Or biClrUsed = 256 Then '256 цветов в палитре
        For i = 0 To 255
         If Massiv256(i, 0) = 255 And Massiv256(i, 1) = 255 And Massiv256(i, 2) = 255 Then
          k = i
          Exit For
         End If
        Next i
       Else 'Число цветов в палитре задано в biClrUsed, оно меньше 256
        For i = 0 To biClrUsed
         If Massiv256(i, 0) = 255 And Massiv256(i, 1) = 255 And Massiv256(i, 2) = 255 Then
          k = i
          Exit For
         End If
        Next i
       End If
       'если в палитре нет совершенно белого цвета как у фона, то быстрее
       If k = -1 Then
         For j = 1 To biHeight
          Ордината = j - 1
          For i = 1 To biWidth
             Picture3.PSet (i - 1, Ордината), &H2000000 Or RGB(Massiv256(BM_MassivК(i, j), 0), Massiv256(BM_MassivК(i, j), 1), Massiv256(BM_MassivК(i, j), 2))
          Next i
          If CSng(j) * МножительИндикатора - ШиринаИндикатора > 2 Then
           ШиринаИндикатора = CSng(j) * МножительИндикатора
           Picture1.Width = CInt(ШиринаИндикатора) + 350
           Picture1.Refresh
          End If
         Next j
        Else 'k > -1 , значит совершенно белый есть в палитре
          For j = 1 To biHeight
           Ордината = j - 1
           For i = 1 To biWidth
            If BM_MassivК(i, j) <> k Then 'цвет с индексом k полностью белый, его не отрисовываем
              Picture3.PSet (i - 1, Ордината), &H2000000 Or RGB(Massiv256(BM_MassivК(i, j), 0), Massiv256(BM_MassivК(i, j), 1), Massiv256(BM_MassivК(i, j), 2))
            End If
           Next i
           If CSng(j) * МножительИндикатора - ШиринаИндикатора > 2 Then
             ШиринаИндикатора = CSng(j) * МножительИндикатора
             Picture1.Width = CInt(ШиринаИндикатора) + 350
             Picture1.Refresh
           End If
          Next j
        End If
      Case 24
        For j = 1 To biHeight
         Ордината = j - 1
         For i = 1 To biWidth
          КраснаяСост = BM_MassivК(i, j)
          ЗелёнаяСост = BM_MassivЗ(i, j)
          СиняяСост = BM_MassivС(i, j)
'          If КраснаяСост <> ЗелёнаяСост Or СиняяСост <> КраснаяСост Then
            If Not (КраснаяСост = 255 And ЗелёнаяСост = 255 And СиняяСост = 255) Then
             Picture3.PSet (i - 1, Ордината), &H2000000 Or RGB(КраснаяСост, ЗелёнаяСост, СиняяСост)
            End If
         Next i
         If CSng(j) * МножительИндикатора - ШиринаИндикатора > 2 Then
          ШиринаИндикатора = CSng(j) * МножительИндикатора
          Picture1.Width = CInt(ШиринаИндикатора) + 350
          Picture1.Refresh
         End If
        Next j
      End Select
    Case "TG"
    ' здесь можно добавить обработку других форматов
     ШиринаИндикатора = ШиринаИндикатора - 349 '350
     '466 вся длина, первая часть отрисована 466*3/4=350 стобцов точек
     МножительИндикатора = 116 / biHeight
     '466-350 = 116 ещё остаётся
     Select Case tgaType
      Case 1, 9 'biBitCount=8 , т.е. с палитрой 256 цветов
         For j = 1 To biHeight
          Ордината = j - 1
          For i = 1 To biWidth
             Picture3.PSet (i - 1, Ордината), &H2000000 Or RGB(Massiv256(BM_MassivК(i, j), 0), Massiv256(BM_MassivК(i, j), 1), Massiv256(BM_MassivК(i, j), 2))
          Next i
          If CSng(j) * МножительИндикатора - ШиринаИндикатора > 2 Then
           ШиринаИндикатора = CSng(j) * МножительИндикатора
           Picture1.Width = CInt(ШиринаИндикатора) + 350
           Picture1.Refresh
          End If
         Next j
       Case 3, 11 'с градациями серого
         For j = 1 To biHeight
          Ордината = j - 1
          For i = 1 To biWidth
            КраснаяСост = BM_MassivК(i, j)
            If КраснаяСост <> 255 Then
             Picture3.PSet (i - 1, Ордината), &H2000000 Or RGB(КраснаяСост, КраснаяСост, КраснаяСост)
            End If
          Next i
          If CSng(j) * МножительИндикатора - ШиринаИндикатора > 2 Then
           ШиринаИндикатора = CSng(j) * МножительИндикатора
           Picture1.Width = CInt(ШиринаИндикатора) + 350
           Picture1.Refresh
          End If
         Next j
       Case 2, 10
        For j = 1 To biHeight
         Ордината = j - 1
         For i = 1 To biWidth
          КраснаяСост = BM_MassivК(i, j)
          ЗелёнаяСост = BM_MassivЗ(i, j)
          СиняяСост = BM_MassivС(i, j)
'          If КраснаяСост <> ЗелёнаяСост Or СиняяСост <> КраснаяСост Then
            If Not (КраснаяСост = 255 And ЗелёнаяСост = 255 And СиняяСост = 255) Then
             Picture3.PSet (i - 1, Ордината), &H2000000 Or RGB(КраснаяСост, ЗелёнаяСост, СиняяСост)
            End If
         Next i
         If CSng(j) * МножительИндикатора - ШиринаИндикатора > 2 Then
          ШиринаИндикатора = CSng(j) * МножительИндикатора
          Picture1.Width = CInt(ШиринаИндикатора) + 350
          Picture1.Refresh
         End If
        Next j
     End Select
    End Select
'MsgBox Minute(Now) * 60 + Second(Now) - ОтсчётСекунд
End Sub
Sub НастройкаИзображения()
If Picture3.Height < 209 Then
  Picture2.Top = 144 + (209 - Picture3.Height) / 2
  Picture2.Height = Picture3.Height + 2
  VScroll1.Visible = False
 Else
  Picture2.Top = 144
  Picture2.Height = 209
  VScroll1.Min = 0
  VScroll1.Max = Picture3.Height - 209 + 2
  VScroll1.Visible = True
End If
If Picture3.Width < 233 Then
  Picture2.Left = 392 + (233 - Picture3.Width) / 2
  Picture2.Width = Picture3.Width + 2
  HScroll1.Visible = False
 Else
  Picture2.Left = 392
  Picture2.Width = 233
  HScroll1.Width = Picture2.Width
  HScroll1.Min = 0
  HScroll1.Max = Picture3.Width - 233 + 2
  HScroll1.Top = Picture2.Top + Picture2.Height
  HScroll1.Visible = True
End If
  VScroll1.Left = Picture2.Left + Picture2.Width
  
  HScroll2.Max = biWidth
  HScroll3.Max = biWidth
  VScroll2.Max = biHeight
  VScroll3.Max = biHeight
End Sub


Private Sub Form_Load()
ExportForm.Width = 9780

'Picture3.Picture = OpenForm.Image11.Picture


Picture3.Top = 0
Picture3.Left = 0

  
  Vydelenie.Top = 0
  Vydelenie.Left = 0
  Vydelenie.Height = 20
  Vydelenie.Width = 20
Picture3.Width = biWidth
Picture3.Height = biHeight

Select Case biBitCount
    Case 24
      Option1.Value = True
    Case 8
      Option4.Value = True
End Select
 Image1.Picture = OpenForm.Image8.Picture
 Image2.Picture = Image7.Picture
 Image3.Picture = OpenForm.Image4.Picture
 Image15.Picture = Image13.Picture
 If Zagruzka = 1 Then
   Image6.Visible = True 'покажем подложку индикатора
  Else
   Image6.Visible = False 'спрячем подложку индикатора
 End If
 Pervoe_Nazhatie = True
 
 Picture3.Left = 0
 Picture3.Top = 0
 PervStroka = 1
 PoslStroka = biHeight
 PervStolb = 1
 PoslStolb = biWidth
 If PoslStroka > 20 Then PoslStroka = 20
 If PoslStolb > 20 Then PoslStolb = 20
 HScroll3.Value = PervStolb
 VScroll3.Value = PervStroka
 HScroll2.Value = PoslStolb
 VScroll2.Value = PoslStroka
 Vydelenie.Left = PervStolb - 1
 Vydelenie.Top = PervStroka - 1
 Vydelenie.Width = PoslStolb - PervStolb + 1
 Vydelenie.Height = PoslStroka - PervStroka + 1
 Vydelenie.Visible = True
 
 Picture5.MousePointer = 99 'пользовательский курсор для Picture5
 Picture5.MouseIcon = Image10.Picture
 
 'знак возможности масштабировать:
 Line13.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line13.X2 = Line13.X1 - 4
 Line13.Y1 = Me.Height / Screen.TwipsPerPixelY - 32
 Line13.Y2 = Line13.Y1 + 4
 Line14.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line14.X2 = Line14.X1 - 6
 Line14.Y1 = Me.Height / Screen.TwipsPerPixelY - 33
 Line14.Y2 = Line14.Y1 + 6
 
 Line15.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line15.X2 = Line15.X1 - 9
 Line15.Y1 = Me.Height / Screen.TwipsPerPixelY - 36
 Line15.Y2 = Line15.Y1 + 9
 Line16.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line16.X2 = Line16.X1 - 10
 Line16.Y1 = Me.Height / Screen.TwipsPerPixelY - 37
 Line16.Y2 = Line16.Y1 + 10
 
 Line17.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line17.X2 = Line17.X1 - 13
 Line17.Y1 = Me.Height / Screen.TwipsPerPixelY - 40
 Line17.Y2 = Line17.Y1 + 13
 Line18.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line18.X2 = Line18.X1 - 14
 Line18.Y1 = Me.Height / Screen.TwipsPerPixelY - 41
 Line18.Y2 = Line18.Y1 + 14
 
 Otmena = True
 
 ПроявлениеЗатухание = True
 ЦветВыделенияК = 70
 

 
Label18.Caption = Format(ДоляКрасного, "0.000")
Label20.Caption = Format(ДоляЗелёного, "0.000")
Label22.Caption = Format(ДоляСинего, "0.000")
Label18.Left = Label17.Left + Label17.Width + 1
Label19.Left = Label18.Left + Label18.Width + 1
Label20.Left = Label19.Left + Label19.Width + 1
Label21.Left = Label20.Left + Label20.Width + 1
Label22.Left = Label21.Left + Label21.Width + 1
 
 ' цвета в Excele
 ' ( ,4) № цвета       ( ,5) № фона      ( ,1) красный     ( ,2) зелёный     ( ,3) синий
Cveta_Excel(0, 4) = 0: Cveta_Excel(0, 5) = 1: Cveta_Excel(0, 1) = 255: Cveta_Excel(0, 2) = 255: Cveta_Excel(0, 3) = 255
Cveta_Excel(1, 4) = 1: Cveta_Excel(1, 5) = 2: Cveta_Excel(1, 1) = 0: Cveta_Excel(1, 2) = 0: Cveta_Excel(1, 3) = 0: Cveta_Excel(1, 4) = 1
Cveta_Excel(2, 4) = 2: Cveta_Excel(2, 5) = 1: Cveta_Excel(2, 1) = 255: Cveta_Excel(2, 2) = 255: Cveta_Excel(2, 3) = 255: Cveta_Excel(2, 4) = 2
Cveta_Excel(3, 4) = 3: Cveta_Excel(3, 5) = 2: Cveta_Excel(3, 1) = 255: Cveta_Excel(3, 2) = 0: Cveta_Excel(3, 3) = 0
Cveta_Excel(4, 4) = 4: Cveta_Excel(4, 5) = 1: Cveta_Excel(4, 1) = 0: Cveta_Excel(4, 2) = 255: Cveta_Excel(4, 3) = 0
Cveta_Excel(5, 4) = 5: Cveta_Excel(5, 5) = 2: Cveta_Excel(5, 1) = 0: Cveta_Excel(5, 2) = 0: Cveta_Excel(5, 3) = 255
Cveta_Excel(6, 4) = 6: Cveta_Excel(6, 5) = 1: Cveta_Excel(6, 1) = 255: Cveta_Excel(6, 2) = 255: Cveta_Excel(6, 3) = 0
Cveta_Excel(7, 4) = 7: Cveta_Excel(7, 5) = 2: Cveta_Excel(7, 1) = 255: Cveta_Excel(7, 2) = 0: Cveta_Excel(7, 3) = 255
Cveta_Excel(8, 4) = 8: Cveta_Excel(8, 5) = 1: Cveta_Excel(8, 1) = 0: Cveta_Excel(8, 2) = 255: Cveta_Excel(8, 3) = 255
Cveta_Excel(9, 4) = 9: Cveta_Excel(9, 5) = 2: Cveta_Excel(9, 1) = 128: Cveta_Excel(9, 2) = 0: Cveta_Excel(9, 3) = 0
Cveta_Excel(10, 4) = 10: Cveta_Excel(10, 5) = 2: Cveta_Excel(10, 1) = 0: Cveta_Excel(10, 2) = 128: Cveta_Excel(10, 3) = 0
Cveta_Excel(11, 4) = 11: Cveta_Excel(11, 5) = 2: Cveta_Excel(11, 1) = 0: Cveta_Excel(11, 2) = 0: Cveta_Excel(11, 3) = 128
Cveta_Excel(12, 4) = 12: Cveta_Excel(12, 5) = 2: Cveta_Excel(12, 1) = 128: Cveta_Excel(12, 2) = 128: Cveta_Excel(12, 3) = 0
Cveta_Excel(13, 4) = 13: Cveta_Excel(13, 5) = 2: Cveta_Excel(13, 1) = 128: Cveta_Excel(13, 2) = 0: Cveta_Excel(13, 3) = 128
Cveta_Excel(14, 4) = 14: Cveta_Excel(14, 5) = 2: Cveta_Excel(14, 1) = 0: Cveta_Excel(14, 2) = 128: Cveta_Excel(14, 3) = 128
Cveta_Excel(15, 4) = 15: Cveta_Excel(15, 5) = 1: Cveta_Excel(15, 1) = 192: Cveta_Excel(15, 2) = 192: Cveta_Excel(15, 3) = 192
Cveta_Excel(16, 4) = 16: Cveta_Excel(16, 5) = 1: Cveta_Excel(16, 1) = 128: Cveta_Excel(16, 2) = 128: Cveta_Excel(16, 3) = 128
Cveta_Excel(17, 4) = 17: Cveta_Excel(17, 5) = 1: Cveta_Excel(17, 1) = 153: Cveta_Excel(17, 2) = 153: Cveta_Excel(17, 3) = 255
Cveta_Excel(18, 4) = 19: Cveta_Excel(18, 5) = 1: Cveta_Excel(18, 1) = 255: Cveta_Excel(18, 2) = 255: Cveta_Excel(18, 3) = 204
Cveta_Excel(19, 4) = 21: Cveta_Excel(19, 5) = 2: Cveta_Excel(19, 1) = 102: Cveta_Excel(19, 2) = 0: Cveta_Excel(19, 3) = 102
Cveta_Excel(20, 4) = 22: Cveta_Excel(20, 5) = 1: Cveta_Excel(20, 1) = 255: Cveta_Excel(20, 2) = 128: Cveta_Excel(20, 3) = 128
Cveta_Excel(21, 4) = 23: Cveta_Excel(21, 5) = 2: Cveta_Excel(21, 1) = 0: Cveta_Excel(21, 2) = 102: Cveta_Excel(21, 3) = 204
Cveta_Excel(22, 4) = 24: Cveta_Excel(22, 5) = 1: Cveta_Excel(22, 1) = 204: Cveta_Excel(22, 2) = 204: Cveta_Excel(22, 3) = 255
Cveta_Excel(23, 4) = 33: Cveta_Excel(23, 5) = 1: Cveta_Excel(23, 1) = 0: Cveta_Excel(23, 2) = 204: Cveta_Excel(23, 3) = 255
Cveta_Excel(24, 4) = 34: Cveta_Excel(24, 5) = 1: Cveta_Excel(24, 1) = 204: Cveta_Excel(24, 2) = 255: Cveta_Excel(24, 3) = 255
Cveta_Excel(25, 4) = 35: Cveta_Excel(25, 5) = 1: Cveta_Excel(25, 1) = 204: Cveta_Excel(25, 2) = 255: Cveta_Excel(25, 3) = 204
Cveta_Excel(26, 4) = 36: Cveta_Excel(26, 5) = 1: Cveta_Excel(26, 1) = 255: Cveta_Excel(26, 2) = 255: Cveta_Excel(26, 3) = 153
Cveta_Excel(27, 4) = 37: Cveta_Excel(27, 5) = 1: Cveta_Excel(27, 1) = 153: Cveta_Excel(27, 2) = 204: Cveta_Excel(27, 3) = 255
Cveta_Excel(28, 4) = 38: Cveta_Excel(28, 5) = 1: Cveta_Excel(28, 1) = 255: Cveta_Excel(28, 2) = 153: Cveta_Excel(28, 3) = 204
Cveta_Excel(29, 4) = 39: Cveta_Excel(29, 5) = 1: Cveta_Excel(29, 1) = 204: Cveta_Excel(29, 2) = 153: Cveta_Excel(29, 3) = 255
Cveta_Excel(30, 4) = 40: Cveta_Excel(30, 5) = 1: Cveta_Excel(30, 1) = 255: Cveta_Excel(30, 2) = 204: Cveta_Excel(30, 3) = 153
Cveta_Excel(31, 4) = 41: Cveta_Excel(31, 5) = 2: Cveta_Excel(31, 1) = 51: Cveta_Excel(31, 2) = 102: Cveta_Excel(31, 3) = 255
Cveta_Excel(32, 4) = 42: Cveta_Excel(32, 5) = 1: Cveta_Excel(32, 1) = 51: Cveta_Excel(32, 2) = 204: Cveta_Excel(32, 3) = 204
Cveta_Excel(33, 4) = 43: Cveta_Excel(33, 5) = 1: Cveta_Excel(33, 1) = 153: Cveta_Excel(33, 2) = 204: Cveta_Excel(33, 3) = 0
Cveta_Excel(34, 4) = 44: Cveta_Excel(34, 5) = 1: Cveta_Excel(34, 1) = 255: Cveta_Excel(34, 2) = 204: Cveta_Excel(34, 3) = 0
Cveta_Excel(35, 4) = 45: Cveta_Excel(35, 5) = 1: Cveta_Excel(35, 1) = 255: Cveta_Excel(35, 2) = 153: Cveta_Excel(35, 3) = 0
Cveta_Excel(36, 4) = 46: Cveta_Excel(36, 5) = 1: Cveta_Excel(36, 1) = 255: Cveta_Excel(36, 2) = 102: Cveta_Excel(36, 3) = 0
Cveta_Excel(37, 4) = 47: Cveta_Excel(37, 5) = 2: Cveta_Excel(37, 1) = 102: Cveta_Excel(37, 2) = 102: Cveta_Excel(37, 3) = 153
Cveta_Excel(38, 4) = 48: Cveta_Excel(38, 5) = 1: Cveta_Excel(38, 1) = 150: Cveta_Excel(38, 2) = 150: Cveta_Excel(38, 3) = 150
Cveta_Excel(39, 4) = 49: Cveta_Excel(39, 5) = 2: Cveta_Excel(39, 1) = 0: Cveta_Excel(39, 2) = 51: Cveta_Excel(39, 3) = 102
Cveta_Excel(40, 4) = 50: Cveta_Excel(40, 5) = 1: Cveta_Excel(40, 1) = 51: Cveta_Excel(40, 2) = 153: Cveta_Excel(40, 3) = 102
Cveta_Excel(41, 4) = 51: Cveta_Excel(41, 5) = 2: Cveta_Excel(41, 1) = 0: Cveta_Excel(41, 2) = 51: Cveta_Excel(41, 3) = 0
Cveta_Excel(42, 4) = 52: Cveta_Excel(42, 5) = 2: Cveta_Excel(42, 1) = 51: Cveta_Excel(42, 2) = 51: Cveta_Excel(42, 3) = 0
Cveta_Excel(43, 4) = 53: Cveta_Excel(43, 5) = 2: Cveta_Excel(43, 1) = 153: Cveta_Excel(43, 2) = 51: Cveta_Excel(43, 3) = 0
Cveta_Excel(44, 4) = 54: Cveta_Excel(44, 5) = 2: Cveta_Excel(44, 1) = 153: Cveta_Excel(44, 2) = 51: Cveta_Excel(44, 3) = 102
Cveta_Excel(45, 4) = 55: Cveta_Excel(45, 5) = 2: Cveta_Excel(45, 1) = 51: Cveta_Excel(45, 2) = 51: Cveta_Excel(45, 3) = 153
Cveta_Excel(46, 4) = 56: Cveta_Excel(46, 5) = 2: Cveta_Excel(46, 1) = 51: Cveta_Excel(46, 2) = 51: Cveta_Excel(46, 3) = 51

'Определим наименьшее расстояние между заданными в Excel цветами в единицах градаций:
'Minimum = 255
'For j = 0 To 46
' For i = 1 To 46
'  If i <> j Then
'   Minimum2 = Sqr((Cveta_Excel(j, 1) - Cveta_Excel(i, 1)) ^ 2 + (Cveta_Excel(j, 2) - Cveta_Excel(i, 2)) ^ 2 + (Cveta_Excel(j, 3) - Cveta_Excel(i, 3)) ^ 2)
'   If Minimum2 < Minimum And Minimum2 > 0 Then Minimum = Minimum2
'  End If
' Next i
'Next j
'MsgBox Minimum
End Sub

Private Sub Form_Resize()

 If VScroll1.Visible = True Then
   If Picture2.Width < Me.Width / Screen.TwipsPerPixelX - Picture2.Left - VScroll1.Width - 16 Then
     If Picture3.Width > Picture2.Width Then
      Picture2.Width = Me.Width / Screen.TwipsPerPixelX - Picture2.Left - VScroll1.Width - 16
      HScroll1.Width = Picture2.Width
      HScroll1.Max = Picture3.Width - Picture2.Width + 2
      HScroll1.Visible = True
      VScroll1.Left = Picture2.Left + Picture2.Width
     Else
      Picture2.Width = Picture3.Width
      HScroll1.Visible = False
     End If
   Else
    If Me.Width / Screen.TwipsPerPixelX - Picture2.Left - VScroll1.Width - 16 > 7 Then
     Picture2.Width = Me.Width / Screen.TwipsPerPixelX - Picture2.Left - VScroll1.Width - 16
     HScroll1.Width = Picture2.Width
     HScroll1.Max = Picture3.Width - Picture2.Width + 2
     HScroll1.Visible = True
     VScroll1.Left = Picture2.Left + Picture2.Width
    End If
   End If
 Else 'VScroll1 невидим
   If Picture2.Width < Me.Width / Screen.TwipsPerPixelX - Picture2.Left - 16 Then
     If Picture3.Width > Picture2.Width Then
      Picture2.Width = Me.Width / Screen.TwipsPerPixelX - Picture2.Left - 16
      HScroll1.Width = Picture2.Width
      HScroll1.Max = Picture3.Width - Picture2.Width + 2
      HScroll1.Visible = True
     Else
      Picture2.Width = Picture3.Width
      HScroll1.Visible = False
     End If
   Else
    If Me.Width / Screen.TwipsPerPixelX - Picture2.Left - 16 > 7 Then
     Picture2.Width = Me.Width / Screen.TwipsPerPixelX - Picture2.Left - 16
     HScroll1.Width = Picture2.Width
     HScroll1.Max = Picture3.Width - Picture2.Width + 2
     HScroll1.Visible = True
    End If
   End If
 End If
 
 Line13.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line13.X2 = Line13.X1 - 4
 Line13.Y1 = Me.Height / Screen.TwipsPerPixelY - 32
 Line13.Y2 = Line13.Y1 + 4
 
 Line14.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line14.X2 = Line14.X1 - 6
 Line14.Y1 = Me.Height / Screen.TwipsPerPixelY - 33
 Line14.Y2 = Line14.Y1 + 6
 
 Line15.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line15.X2 = Line15.X1 - 9
 Line15.Y1 = Me.Height / Screen.TwipsPerPixelY - 36
 Line15.Y2 = Line15.Y1 + 9
 Line16.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line16.X2 = Line16.X1 - 10
 Line16.Y1 = Me.Height / Screen.TwipsPerPixelY - 37
 Line16.Y2 = Line16.Y1 + 10
 
 Line17.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line17.X2 = Line17.X1 - 13
 Line17.Y1 = Me.Height / Screen.TwipsPerPixelY - 40
 Line17.Y2 = Line17.Y1 + 13
 Line18.X1 = Me.Width / Screen.TwipsPerPixelX - 9
 Line18.X2 = Line18.X1 - 14
 Line18.Y1 = Me.Height / Screen.TwipsPerPixelY - 41
 Line18.Y2 = Line18.Y1 + 14
End Sub

Private Sub HScroll1_Change()
Picture3.Left = -HScroll1.Value
End Sub

Private Sub HScroll1_Scroll()
Picture3.Left = -HScroll1.Value
End Sub

Private Sub HScroll2_Change()
PoslStolb = HScroll2.Value
Text4.Text = Str$(PoslStolb)
If PoslStolb - PervStolb > 255 Then
 HScroll3.Value = PoslStolb - 255: PervStolb = PoslStolb - 255
End If
If PoslStolb - PervStolb < 0 Then
 HScroll3.Value = PoslStolb: PervStolb = PoslStolb
End If
Text3.Text = Str$(PervStolb)
Text5.Text = Str$(PoslStolb - PervStolb + 1)
  Vydelenie.Left = PervStolb - 1
  Vydelenie.Width = PoslStolb - PervStolb + 1
 If Pervoe_Nazhatie = True Then 'прорисуем увеличенный фрагмент
   Screen.MousePointer = 13
   Call Uvelichenie
   Screen.MousePointer = 0
 End If
End Sub

Private Sub HScroll2_Scroll()
PoslStolb = HScroll2.Value
Text4.Text = Str$(PoslStolb)
If PoslStolb - PervStolb > 255 Then
 HScroll3.Value = PoslStolb - 255: PervStolb = PoslStolb - 255
End If
If PoslStolb - PervStolb < 0 Then
 HScroll3.Value = PoslStolb: PervStolb = PoslStolb
End If
Text3.Text = Str$(PervStolb)
Text5.Text = Str$(PoslStolb - PervStolb + 1)
  Vydelenie.Left = PervStolb - 1
  Vydelenie.Width = PoslStolb - PervStolb + 1
End Sub

Private Sub HScroll3_Change()
PervStolb = HScroll3.Value
Text3.Text = Str$(PervStolb)
If PoslStolb - PervStolb > 255 Then
 HScroll2.Value = PervStolb + 255: PoslStolb = PervStolb + 255
End If
If PoslStolb - PervStolb < 0 Then
 HScroll2.Value = PervStolb: PoslStolb = PervStolb
End If
Text4.Text = Str$(PoslStolb)
Text5.Text = Str$(PoslStolb - PervStolb + 1)
 Vydelenie.Left = PervStolb - 1
 Vydelenie.Width = PoslStolb - PervStolb + 1
 If Pervoe_Nazhatie = True Then 'прорисуем увеличенный фрагмент
   Screen.MousePointer = 13
   Uvelichenie
   Screen.MousePointer = 0
 End If
End Sub

Private Sub HScroll3_Scroll()
PervStolb = HScroll3.Value
Text3.Text = Str$(PervStolb)
If PoslStolb - PervStolb > 255 Then
 HScroll2.Value = PervStolb + 255: PoslStolb = PervStolb + 255
End If
If PoslStolb - PervStolb < 0 Then
 HScroll2.Value = PervStolb: PoslStolb = PervStolb
End If
Text4.Text = Str$(PoslStolb)
Text5.Text = Str$(PoslStolb - PervStolb + 1)
 Vydelenie.Left = PervStolb - 1
 Vydelenie.Width = PoslStolb - PervStolb + 1
End Sub

Private Sub HScroll4_Change()
Picture5.Left = -HScroll4.Value
End Sub

Private Sub HScroll4_Scroll()
Picture5.Left = -HScroll4.Value
End Sub

Private Sub Image1_Click()
If PervStolb < 1 Then PervStolb = 1
If PoslStolb > biWidth Then PoslStolb = biWidth
If Abs(PoslStolb - PervStolb) > 255 Then PoslStolb = PervStolb + 255
'вставить проверку
ReDim Export(1 To PoslStroka - PervStroka + 1, 1 To PoslStolb - PervStolb + 1)
ReDim ExportFon(1 To PoslStroka - PervStroka + 1, 1 To PoslStolb - PervStolb + 1, 1 To 2)
PervStrokaMinus1 = PervStroka - 1
PervStolbMinus1 = PervStolb - 1
'дублируется код, потому убран в комментарии
'If ((bfType = "BM" Or bfType = "BA") And biBitCount = 8) Or (bfType = "TG" And (tgaType = 1 Or tgaType = 9)) Then
' For i = PervStroka To PoslStroka
'  For j = PervStolb To PoslStolb
'   Red = CInt(Massiv256(BM_MassivК(j, i), 0))
'   Green = CInt(Massiv256(BM_MassivК(j, i), 1))
'   Blue = CInt(Massiv256(BM_MassivК(j, i), 2))
'   Call Podbor_Cvetov
'  Next j
' Next i
'End If
'If (bfType = "BM" Or bfType = "BA") And biBitCount = 24 Then
' For i = PervStroka To PoslStroka
'  For j = PervStolb To PoslStolb
'   Red = CInt(BM_MassivК(j, i))
'   Green = CInt(BM_MassivЗ(j, i))
'   Blue = CInt(BM_MassivС(j, i))
'   Call Podbor_Cvetov
'  Next j
' Next i
'End If
If PoslStolb - PervStolb + 65 < 91 Then
  Posledniy_Stolbec = Chr(PoslStolb - PervStolb + 65)
 Else
  If (PoslStolb - PervStolb + 1) Mod 26 > 0 Then
    Posledniy_Stolbec = Chr((PoslStolb - PervStolb + 1) \ 26 + 64) + Chr((PoslStolb - PervStolb + 1) Mod 26 + 64)
   Else
    Posledniy_Stolbec = Chr((PoslStolb - PervStolb + 1) \ 26 + 63) + "Z"
  End If
End If
Select Case bfType
 Case "BM", "BA", "TG"
  Select Case biBitCount
   Case 8
   If Not (bfType = "TG" And (tgaType = 3 Or tgaType = 11)) Then
    If ChyornoBely = 0 Then   'чёрно-белый (градации серого)
      For j = PervStolb To PoslStolb
       For i = PervStroka To PoslStroka
        Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 0))
       Next i
      Next j
    Else 'если не все градации серого
     Select Case Minus
      Case 1    'красная
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 0))
        Next i
       Next j
      Case 2    'зелёная
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 1))
        Next i
       Next j
      Case 3    'синяя
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 2))
        Next i
       Next j
      Case 4    'срелнее арифметическое
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = (CSng(Massiv256(BM_MassivК(j, i), 0)) + CSng(Massiv256(BM_MassivК(j, i), 1)) + CSng(Massiv256(BM_MassivК(j, i), 2))) / 3
        Next i
       Next j
      Case 5    'максимальное
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
        If Massiv256(BM_MassivК(j, i), 0) > Massiv256(BM_MassivК(j, i), 1) Then
          If Massiv256(BM_MassivК(j, i), 0) > Massiv256(BM_MassivК(j, i), 2) Then
            Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 0))
           Else
            Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 2))
          End If
         Else
          If Massiv256(BM_MassivК(j, i), 1) > Massiv256(BM_MassivК(j, i), 2) Then
             Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 1))
            Else
             Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 2))
          End If
        End If
        Next i
       Next j
      Case 6    'R*0,299 + G*0,587+B*0,114
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(Massiv256(BM_MassivК(j, i), 0)) * ДоляКрасного + CSng(Massiv256(BM_MassivК(j, i), 1)) * ДоляЗелёного + CSng(Massiv256(BM_MassivК(j, i), 2)) * ДоляСинего
        Next i
       Next j
     End Select
    End If
    If Check1.Value = 1 Then 'для заливки фона ячеек
     For i = PervStroka To PoslStroka
      For j = PervStolb To PoslStolb
       Red = Massiv256(BM_MassivК(j, i), 0)
       Green = Massiv256(BM_MassivК(j, i), 1)
       Blue = Massiv256(BM_MassivК(j, i), 2)
       Podbor_Cvetov
      Next j
     Next i
    End If
    
   Else 'tga в градациях серого
    For j = PervStolb To PoslStolb
     For i = PervStroka To PoslStroka
      Export(i - PervStrokaMinus1, j - PervStolbMinus1) = BM_MassivК(j, i)
     Next i
    Next j
    If Check1.Value = 1 Then 'для заливки фона ячеек
     For i = PervStroka To PoslStroka
      For j = PervStolb To PoslStolb
       Red = CInt(BM_MassivК(j, i))
       Green = Red
       Blue = Red
       Call Podbor_Cvetov
      Next j
     Next i
    End If
   End If
     '8-битный BMP завершён
     
   Case 24
    If ChyornoBely = 0 Then   'чёрно-белый (градации серого)
      For j = PervStolb To PoslStolb
       For i = PervStroka To PoslStroka
        Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivК(j, i))
       Next i
      Next j
    Else
     Select Case Minus
      Case 1    'красная
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivК(j, i))
        Next i
       Next j
      Case 2    'зелёная
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivЗ(j, i))
        Next i
       Next j
      Case 3    'синяя
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivС(j, i))
        Next i
       Next j
      Case 4    'срелнее арифметическое
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = (CSng(BM_MassivК(j, i)) + CSng(BM_MassivЗ(j, i)) + CSng(BM_MassivС(j, i))) / 3
        Next i
       Next j
      Case 5    'максимальное
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
        If BM_MassivК(j, i) > BM_MassivЗ(j, i) Then
          If BM_MassivК(j, i) > BM_MassivС(j, i) Then
            Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivК(j, i))
           Else
            Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivС(j, i))
          End If
         Else
          If BM_MassivЗ(j, i) > BM_MassivС(j, i) Then
             Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivЗ(j, i))
            Else
             Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivС(j, i))
          End If
        End If
        Next i
       Next j
      Case 6    'R*0,299 + G*0,587+B*0,114
       For j = PervStolb To PoslStolb
        For i = PervStroka To PoslStroka
         Export(i - PervStrokaMinus1, j - PervStolbMinus1) = CSng(BM_MassivК(j, i)) * ДоляКрасного + CSng(BM_MassivЗ(j, i)) * ДоляЗелёного + CSng(BM_MassivС(j, i)) * ДоляСинего
        Next i
       Next j
     End Select
    End If
    
    If Check1.Value = 1 Then 'для заливки фона ячеек
     For i = PervStroka To PoslStroka
      For j = PervStolb To PoslStolb
       Red = BM_MassivК(j, i)
       Green = BM_MassivЗ(j, i)
       Blue = BM_MassivС(j, i)
       Call Podbor_Cvetov
      Next j
     Next i
    End If
     '24-битный BMP завершён
     
   End Select
 'Case ""   'другие форматы
End Select

Check_Zalivka = False
If Check1.Value = 1 Then Check_Zalivka = True

Otmena = False
Unload ExportForm
End Sub

Private Sub Image1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image1.Picture = OpenForm.Image10.Picture
End Sub

Private Sub Image1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image1.Picture = OpenForm.Image8.Picture
End Sub


Private Sub Image15_Click()
Dim SelectedFile3 As String

'сохранить файл .CSV
If PervStolb < 1 Then PervStolb = 1
If PoslStolb > biWidth Then PoslStolb = biWidth

'вставить проверку
'ReDim Export(1 To PoslStroka - PervStroka + 1, 1 To PoslStolb - PervStolb + 1)
'ReDim ExportFon(1 To PoslStroka - PervStroka + 1, 1 To PoslStolb - PervStolb + 1, 1 To 2)
PervStrokaMinus1 = PervStroka - 1
PervStolbMinus1 = PervStolb - 1


If Right(SelectedFile, 4) = ".bmp" Or Right(SelectedFile, 4) = ".BMP" Or Right(SelectedFile, 4) = ".tga" Or Right(SelectedFile, 4) = ".TGA" Then
 SelectedFile2 = Left(SelectedFile, Len(SelectedFile) - 3) & "csv"
End If
i = Len(SelectedFile2)
While i > 1
  If Mid(SelectedFile2, i, 1) = "\" Then
   SelectedFile3 = Right(SelectedFile2, Len(SelectedFile2) - i)
   i = 1
  End If
  i = i - 1
Wend

TextInfo = InputBox("Введите название файла" & vbCrLf & "или оставьте поле пустам," & vbCrLf & "чтобы сохранить как" & vbCrLf & SelectedFile3, "Сохранить выделение в табличный файл")
If TextInfo <> "" Then
 If Right(TextInfo, 4) = ".csv" Or Right(TextInfo, 4) = ".CSV" Then
  SelectedFile2 = Left(SelectedFile2, Len(SelectedFile2) - Len(SelectedFile3)) & TextInfo
 Else
  If Right(TextInfo, 4) = ".cvs" Or Right(TextInfo, 4) = ".CVS" Then
   'исправление CVS на CSV
   SelectedFile2 = Left(SelectedFile2, Len(SelectedFile2) - Len(SelectedFile3)) & Left(TextInfo, Len(TextInfo) - 4) & ".csv"
  Else
   SelectedFile2 = Left(SelectedFile2, Len(SelectedFile2) - Len(SelectedFile3)) & TextInfo & ".csv"
  End If
 End If
'Else 'SelectedFile2 остаётся
End If

FileNum = FreeFile
Open SelectedFile2 For Output As #FileNum
Select Case bfType
 Case "BM", "BA", "TG"
  Select Case biBitCount
   Case 8
   If ChyornoBely = 0 Then   'чёрно-белый (градации серого)
     If bfType = "TG" And (tgaType = 3 Or tgaType = 11) Then
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
            Print #FileNum, CStr(BM_MassivК(i, j)) & ";";
         Else
            Print #FileNum, CStr(BM_MassivК(i, j))
         End If
       Next i
      Next j
     Else 'обычная палитра 256 цветов
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
            'Print #FileNum, CStr(Format(a0, "0.00")) & ";";
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 0)) & ";";
         Else
            'Print #FileNum, CStr(Format(a0, "0.00"))
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 0))
         End If
       Next i
      Next j
     End If
    Else 'нечёрно-белое изображение
     Select Case Minus
      Case 1    'красная
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 0)) & ";";
         Else
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 0))
         End If
        Next i
       Next j
      Case 2    'зелёная
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 1)) & ";";
         Else
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 1))
         End If
        Next i
       Next j
      Case 3    'синяя
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 2)) & ";";
         Else
            Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 2))
         End If
        Next i
       Next j
      Case 4    'среднее арифметическое
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
            Print #FileNum, Format((CSng(Massiv256(BM_MassivК(i, j), 0)) + CSng(Massiv256(BM_MassivК(i, j), 1)) + CSng(Massiv256(BM_MassivК(i, j), 2))) / 3, "0.00") & ";";
         Else
            Print #FileNum, Format((CSng(Massiv256(BM_MassivК(i, j), 0)) + CSng(Massiv256(BM_MassivК(i, j), 1)) + CSng(Massiv256(BM_MassivК(i, j), 2))) / 3, "0.00")
         End If
        Next i
       Next j
      Case 5    'максимальное
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
        If Massiv256(BM_MassivК(i, j), 0) > Massiv256(BM_MassivК(i, j), 1) Then
          If Massiv256(BM_MassivК(i, j), 0) > Massiv256(BM_MassivК(i, j), 2) Then
            If i <> PoslStolb Then
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 0)) & ";";
            Else
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 0))
            End If
           Else
            If i <> PoslStolb Then
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 2)) & ";";
            Else
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 2))
            End If
          End If
         Else
          If Massiv256(BM_MassivК(i, j), 1) > Massiv256(BM_MassivК(i, j), 2) Then
             If i <> PoslStolb Then
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 1)) & ";";
             Else
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 1))
             End If
            Else
             If i <> PoslStolb Then
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 2)) & ";";
             Else
              Print #FileNum, CStr(Massiv256(BM_MassivК(i, j), 2))
             End If
          End If
        End If
        Next i
       Next j
      Case 6    'R*0,299 + G*0,587+B*0,114
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
          Print #FileNum, Format(CStr(CSng(Massiv256(BM_MassivК(i, j), 0)) * ДоляКрасного + CSng(Massiv256(BM_MassivК(i, j), 1)) * ДоляЗелёного + CSng(Massiv256(BM_MassivК(i, j), 2)) * ДоляСинего), "0.00") & ";";
         Else
          Print #FileNum, Format(CStr(CSng(Massiv256(BM_MassivК(i, j), 0)) * ДоляКрасного + CSng(Massiv256(BM_MassivК(i, j), 1)) * ДоляЗелёного + CSng(Massiv256(BM_MassivК(i, j), 2)) * ДоляСинего), "0.00")
         End If
        Next i
       Next j
     End Select
   End If
     '8-битный BMP завершён
   Case 24
    If ChyornoBely = 0 Then   'чёрно-белый (градации серого)
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
          Print #FileNum, CStr(BM_MassivК(i, j)) & ";";
         Else
          Print #FileNum, CStr(BM_MassivК(i, j))
         End If
       Next i
      Next j
    Else
     Select Case Minus
      Case 1    'красная
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
          Print #FileNum, CStr(BM_MassivК(i, j)) & ";";
         Else
          Print #FileNum, CStr(BM_MassivК(i, j))
         End If
        Next i
       Next j
      Case 2    'зелёная
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
          Print #FileNum, CStr(BM_MassivЗ(i, j)) & ";";
         Else
          Print #FileNum, CStr(BM_MassivЗ(i, j))
         End If
        Next i
       Next j
      Case 3    'синяя
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
          Print #FileNum, CStr(BM_MassivС(i, j)) & ";";
         Else
          Print #FileNum, CStr(BM_MassivС(i, j))
         End If
        Next i
       Next j
      Case 4    'срелнее арифметическое
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
          Print #FileNum, Format(CStr((CSng(BM_MassivК(i, j)) + CSng(BM_MassivЗ(i, j)) + CSng(BM_MassivС(i, j))) / 3), "0.00") & ";";
         Else
          Print #FileNum, Format(CStr((CSng(BM_MassivК(i, j)) + CSng(BM_MassivЗ(i, j)) + CSng(BM_MassivС(i, j))) / 3), "0.00")
         End If
        Next i
       Next j
      Case 5    'максимальное
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
        If BM_MassivК(i, j) > BM_MassivЗ(i, j) Then
          If BM_MassivК(i, j) > BM_MassivС(i, j) Then
            If i <> PoslStolb Then
             Print #FileNum, CStr(BM_MassivК(i, j)) & ";";
            Else
             Print #FileNum, CStr(BM_MassivК(i, j))
            End If
           Else
            If i <> PoslStolb Then
             Print #FileNum, CStr(BM_MassivС(i, j)) & ";";
            Else
             Print #FileNum, CStr(BM_MassivС(i, j))
            End If
          End If
         Else
          If BM_MassivЗ(i, j) > BM_MassivС(i, j) Then
            If i <> PoslStolb Then
             Print #FileNum, CStr(BM_MassivЗ(i, j)) & ";";
            Else
             Print #FileNum, CStr(BM_MassivЗ(i, j))
            End If
           Else
            If i <> PoslStolb Then
             Print #FileNum, CStr(BM_MassivС(i, j)) & ";";
            Else
             Print #FileNum, CStr(BM_MassivС(i, j))
            End If
          End If
        End If
        Next i
       Next j
      Case 6    'R*0,299 + G*0,587+B*0,114
       For j = PervStroka To PoslStroka
        For i = PervStolb To PoslStolb
         If i <> PoslStolb Then
          Print #FileNum, Format(CStr(CSng(BM_MassivК(i, j)) * ДоляКрасного + CSng(BM_MassivЗ(i, j)) * ДоляЗелёного + CSng(BM_MassivС(i, j)) * ДоляСинего), "0.00") & ";";
         Else
          Print #FileNum, Format(CStr(CSng(BM_MassivК(i, j)) * ДоляКрасного + CSng(BM_MassivЗ(i, j)) * ДоляЗелёного + CSng(BM_MassivС(i, j)) * ДоляСинего), "0.00")
         End If
        Next i
       Next j
     End Select
    End If
     '24-битный BMP завершён
   End Select
 'Case ""   'другие форматы
End Select
i = Len(SelectedFile)
While i > 1
  If Mid(SelectedFile, i, 1) = "\" Then
   SelectedFile3 = Right(SelectedFile, Len(SelectedFile) - i)
   i = 1
  End If
  i = i - 1
Wend
'подпись под таблицей
If PoslStolb - PervStolb > 1 Then
 Print #FileNum, "Файл: " & SelectedFile3 & " ,    Точек " & biWidth & "x" & biHeight & "   , " & 2 ^ biBitCount & " цветов";
 For i = PervStolb To PoslStolb - 2
  Print #FileNum, ";";
 Next i
 Print #FileNum, ";"
      If ChyornoBely = 0 Then
        Print #FileNum, "Выведена ЯРКОСТЬ (яркость чёрно-белого изображения)";
       Else
        Select Case Minus
         Case 1
          Print #FileNum, "Выведена ЯРКОСТЬ КРАСНОЙ СОСТАВЛЯЮЩЕЙ";
         Case 2
          Print #FileNum, "Выведена ЯРКОСТЬ ЗЕЛЁНОЙ СОСТАВЛЯЮЩЕЙ";
         Case 3
          Print #FileNum, "Выведена ЯРКОСТЬ СИНЕЙ СОСТАВЛЯЮЩЕЙ";
         Case 4
          Print #FileNum, "Выведена ЯРКОСТЬ как среднее арифметическое от красной, зелёной и синей составляющей";
         Case 5
          Print #FileNum, "Выведена МАКСИМАЛЬНАЯ ЯРКОСТЬ среди красной, зелёной и синей составляющих каждой точки";
         Case 6
          Print #FileNum, "Выведена ЯРКОСТЬ = " & Format(ДоляКрасного, "0.000") & "•R + " & Format(ДоляЗелёного, "0.000") & "•G + " & Format(ДоляСинего, "0.000") & "•B";
        End Select
      End If
 For i = PervStolb To PoslStolb - 2
  Print #FileNum, ";";
 Next i
 Print #FileNum, ";"
 
 Print #FileNum, "От [" & PervStolb & " , " & PervStroka & "] до [" & PoslStolb & " , " & PoslStroka & "] (отсчёт с левого верхнего угла)";
 For i = PervStolb To PoslStolb - 2
  Print #FileNum, ";";
 Next i
 Print #FileNum, ";"
 
ElseIf PoslStolb - PervStolb = 1 Then
 Print #FileNum, "Файл: " & SelectedFile3 & " ,    Точек " & biWidth & "x" & biHeight & "   , " & 2 ^ biBitCount & " цветов;"
      If ChyornoBely = 0 Then
        Print #FileNum, "Выведена ЯРКОСТЬ (яркость чёрно-белого изображения);"
       Else
        Select Case Minus
         Case 1
          Print #FileNum, "Выведена ЯРКОСТЬ КРАСНОЙ СОСТАВЛЯЮЩЕЙ;"
         Case 2
          Print #FileNum, "Выведена ЯРКОСТЬ ЗЕЛЁНОЙ СОСТАВЛЯЮЩЕЙ;"
         Case 3
          Print #FileNum, "Выведена ЯРКОСТЬ СИНЕЙ СОСТАВЛЯЮЩЕЙ;"
         Case 4
          Print #FileNum, "Выведена ЯРКОСТЬ как среднее арифметическое от красной, зелёной и синей составляющей;"
         Case 5
          Print #FileNum, "Выведена МАКСИМАЛЬНАЯ ЯРКОСТЬ среди красной, зелёной и синей составляющих каждой точки;"
         Case 6
          Print #FileNum, "Выведена ЯРКОСТЬ = " & Format(ДоляКрасного, "0.000") & "•R + " & Format(ДоляЗелёного, "0.000") & "•G + " & Format(ДоляСинего, "0.000") & "•B;"
        End Select
      End If
 Print #FileNum, "От [" & PervStolb & " , " & PervStroka & "] до [" & PoslStolb & " , " & PoslStroka & "] (отсчёт с левого верхнего угла);"
 
ElseIf PoslStolb - PervStolb = 0 Then
 Print #FileNum, "Файл: " & SelectedFile3 & " ,    Точек " & biWidth & "x" & biHeight & "   , " & 2 ^ biBitCount & " цветов"
      If ChyornoBely = 0 Then
        Print #FileNum, "Выведена ЯРКОСТЬ (яркость чёрно-белого изображения)"
       Else
        Select Case Minus
         Case 1
          Print #FileNum, "Выведена ЯРКОСТЬ КРАСНОЙ СОСТАВЛЯЮЩЕЙ"
         Case 2
          Print #FileNum, "Выведена ЯРКОСТЬ ЗЕЛЁНОЙ СОСТАВЛЯЮЩЕЙ"
         Case 3
          Print #FileNum, "Выведена ЯРКОСТЬ СИНЕЙ СОСТАВЛЯЮЩЕЙ"
         Case 4
          Print #FileNum, "Выведена ЯРКОСТЬ как среднее арифметическое от красной, зелёной и синей составляющей"
         Case 5
          Print #FileNum, "Выведена МАКСИМАЛЬНАЯ ЯРКОСТЬ среди красной, зелёной и синей составляющих каждой точки"
         Case 6
          Print #FileNum, "Выведена ЯРКОСТЬ = " & Format(ДоляКрасного, "0.000") & "•R + " & Format(ДоляЗелёного, "0.000") & "•G + " & Format(ДоляСинего, "0.000") & "•B"
        End Select
      End If
 Print #FileNum, "От [" & PervStolb & " , " & PervStroka & "] до [" & PoslStolb & " , " & PoslStroka & "] (отсчёт с левого верхнего угла)"
End If

Close #FileNum

End Sub

Private Sub Image15_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image15.Picture = Image14.Picture
End Sub

Private Sub Image15_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image15.Picture = Image13.Picture
End Sub

Private Sub Image2_Click() 'кнопка отмены
Otmena = True
Unload ExportForm
End Sub

Private Sub Image2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image2.Picture = Image8.Picture
End Sub

Private Sub Image2_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image2.Picture = Image7.Picture
End Sub

Private Sub Image3_Click()
HelpExportForm.Show 1, ExportForm
End Sub

Private Sub Image3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image3.Picture = OpenForm.Image5.Picture
End Sub

Private Sub Image3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Image3.Picture = OpenForm.Image4.Picture
End Sub

Private Sub Label17_Click()
Option6.Value = True
End Sub

Private Sub Label18_Click()
Option6.Value = True
TextInfo = InputBox("Введите долю красной составляющей ", "Ввести коэффициент красной составляющей")
TextInfo = RTrim(LTrim(TextInfo))
If TextInfo = "" Then Exit Sub
NumberOrNot = True
ЧислоРазделителей = 0
TextInfo2 = ""
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then
   'если не цифра и не разделитель целой и дробной части (, или .), то это не число
   If Asc(Mid(TextInfo, i, 1)) <> 44 And Asc(Mid(TextInfo, i, 1)) <> 46 Then
    NumberOrNot = False
   Else
    ЧислоРазделителей = ЧислоРазделителей + 1
    TextInfo2 = TextInfo2 & "."
   'Asc(",") = 44
   'Asc(".") = 46
   End If
  Else
   TextInfo2 = TextInfo2 & Mid(TextInfo, i, 1)
  End If
Next i
If ЧислоРазделителей < 2 And NumberOrNot = True Then
 ДоляКрасного = Val(TextInfo2)
 Label18.Caption = Format(ДоляКрасного, "0.000")
 Label19.Left = Label18.Left + Label18.Width + 1
 Label20.Left = Label19.Left + Label19.Width + 1
 Label21.Left = Label20.Left + Label20.Width + 1
 Label22.Left = Label21.Left + Label21.Width + 1
End If
End Sub

Private Sub Label19_Click()
Option6.Value = True
End Sub

Private Sub Label20_Click()
Option6.Value = True
TextInfo = InputBox("Введите долю зелёной составляющей ", "Ввести коэффициент зелёной составляющей")
TextInfo = RTrim(LTrim(TextInfo))
If TextInfo = "" Then Exit Sub
NumberOrNot = True
ЧислоРазделителей = 0
TextInfo2 = ""
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then
   'если не цифра и не разделитель целой и дробной части (, или .), то это не число
   'Asc(",") = 44  'Asc(".") = 46
   If Asc(Mid(TextInfo, i, 1)) <> 44 And Asc(Mid(TextInfo, i, 1)) <> 46 Then
    NumberOrNot = False
   Else
    ЧислоРазделителей = ЧислоРазделителей + 1
    TextInfo2 = TextInfo2 & "."
   End If
  Else
   TextInfo2 = TextInfo2 & Mid(TextInfo, i, 1)
  End If
Next i
If ЧислоРазделителей < 2 And NumberOrNot = True Then
 ДоляЗелёного = Val(TextInfo2)
 Label20.Caption = Format(ДоляЗелёного, "0.000")
 Label21.Left = Label20.Left + Label20.Width + 1
 Label22.Left = Label21.Left + Label21.Width + 1
End If
End Sub

Private Sub Label21_Click()
Option6.Value = True
End Sub

Private Sub Label22_Click()
Option6.Value = True
TextInfo = InputBox("Введите долю синей составляющей ", "Ввести коэффициент синей составляющей")
TextInfo = RTrim(LTrim(TextInfo))
If TextInfo = "" Then Exit Sub
NumberOrNot = True
ЧислоРазделителей = 0
TextInfo2 = ""
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then
   'если не цифра и не разделитель целой и дробной части (, или .), то это не число
   'Asc(",") = 44  'Asc(".") = 46
   If Asc(Mid(TextInfo, i, 1)) <> 44 And Asc(Mid(TextInfo, i, 1)) <> 46 Then
    NumberOrNot = False
   Else
    ЧислоРазделителей = ЧислоРазделителей + 1
    TextInfo2 = TextInfo2 & "."
   End If
  Else
   TextInfo2 = TextInfo2 & Mid(TextInfo, i, 1)
  End If
Next i
If ЧислоРазделителей < 2 And NumberOrNot = True Then
 ДоляСинего = Val(TextInfo2)
 Label22.Caption = Format(ДоляСинего, "0.000")
End If
End Sub

Private Sub Option1_Click()
If Option1.Value = True Then
Option2.Value = False
Option3.Value = False
Option4.Value = False
Option5.Value = False
Option6.Value = False
Minus = 1
ЦветВыделения = 1
Label16.Visible = False
Label16.FontBold = False
Label12.FontBold = True
Label13.FontBold = False
Label14.FontBold = False
End If
End Sub

Private Sub Option2_Click()
If Option2.Value = True Then
Option1.Value = False
Option3.Value = False
Option4.Value = False
Option5.Value = False
Option6.Value = False
Minus = 2
ЦветВыделения = 2
Label16.Visible = False
Label16.FontBold = False
Label12.FontBold = False
Label13.FontBold = True
Label14.FontBold = False
End If
End Sub

Private Sub Option3_Click()
If Option3.Value = True Then
Option1.Value = False
Option2.Value = False
Option4.Value = False
Option5.Value = False
Option6.Value = False
Minus = 3
ЦветВыделения = 3
Label16.Visible = False
Label16.FontBold = False
Label12.FontBold = False
Label13.FontBold = False
Label14.FontBold = True
End If
End Sub

Private Sub Option4_Click()
If Option4.Value = True Then
Option1.Value = False
Option2.Value = False
Option3.Value = False
Option5.Value = False
Option6.Value = False
Minus = 4
Label16.Visible = True
Label16.FontBold = True
Label12.FontBold = False
Label13.FontBold = False
Label14.FontBold = False
End If
End Sub

Private Sub Option5_Click()
If Option5.Value = True Then
Option1.Value = False
Option2.Value = False
Option3.Value = False
Option4.Value = False
Option6.Value = False
Minus = 5
Label16.Visible = True
Label16.FontBold = True
Label12.FontBold = False
Label13.FontBold = False
Label14.FontBold = False
End If
End Sub

Sub Option6_Click()
If Option6.Value = True Then
Option1.Value = False
Option2.Value = False
Option3.Value = False
Option4.Value = False
Option5.Value = False
Minus = 6
Label16.Visible = True
Label16.FontBold = True
Label12.FontBold = False
Label13.FontBold = False
Label14.FontBold = False
End If
End Sub


Private Sub Picture1_Click()
If Picture1.Top = 8 Then
Picture1.Top = Picture1.Top + Picture1.Height
Else
Picture1.Top = 8
End If
End Sub

Private Sub Picture3_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
 Select Case Button
 Case 1, 3
 Vydelenie.Visible = True
 Case 2 'нажата правая кнопка
 Vydelenie.Visible = True
  Select Case Vydelenie.DrawMode
   Case 13
    Vydelenie.DrawMode = 6
   Case 6
    Vydelenie.DrawMode = 15
    Vydelenie.BorderColor = RGB(0, 255, 0)
   Case 15
    Vydelenie.DrawMode = 5
   Case 5
    Vydelenie.DrawMode = 13
    Vydelenie.BorderColor = RGB(255, 0, 0)
  End Select
 Case 4, 5, 6, 7 ' нажата средняя кнопка и возможно другие
 Vydelenie.Visible = False
 End Select
End Sub

Private Sub Picture3_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Rezerv_X = X
Rezerv_Y = Y
 If Rezerv_X < 0 Then
   Rezerv_X = 0
  Else
   If Rezerv_X > biWidth - 1 Then Rezerv_X = biWidth - 1
 End If
 If Rezerv_Y < 0 Then
   Rezerv_Y = 0
  Else
   If Rezerv_Y > biHeight - 1 Then Rezerv_Y = biHeight - 1
 End If
Select Case Button
  Case 1, 3 'Нажата левая кнопка и возможно другие
   If Pervoe_Nazhatie = True Then
    Pervoe_Nazhatie = False
    Nachalo_Pryamougolnika_X = Rezerv_X
    Nachalo_Pryamougolnika_Y = Rezerv_Y
    Vydelenie.Width = 1
    Vydelenie.Height = 1
    Vydelenie.Left = Nachalo_Pryamougolnika_X
    Vydelenie.Top = Nachalo_Pryamougolnika_Y
   Else
    If Rezerv_X > Nachalo_Pryamougolnika_X Then
      Vydelenie.Width = Rezerv_X - Nachalo_Pryamougolnika_X + 1
      Else
      Vydelenie.Width = Nachalo_Pryamougolnika_X - Rezerv_X + 1
      Vydelenie.Left = Rezerv_X
    End If
    If Vydelenie.Width > 256 Then Vydelenie.Width = 256
    If Rezerv_Y <= Nachalo_Pryamougolnika_Y Then
      Vydelenie.Height = Nachalo_Pryamougolnika_Y - Rezerv_Y + 1
      Vydelenie.Top = Rezerv_Y
     Else
      Vydelenie.Height = Rezerv_Y - Nachalo_Pryamougolnika_Y + 1
    End If
     If Vydelenie.Left < 0 Then Vydelenie.Left = 0
     If Vydelenie.Left > biWidth - 1 Then Vydelenie.Left = biWidth - 1
     PervStolb = Vydelenie.Left + 1
     If Vydelenie.Width < 1 Then Vydelenie.Width = 1
     If Vydelenie.Left + Vydelenie.Width > biWidth Then Vydelenie.Width = biWidth - Vydelenie.Left
     PoslStolb = Vydelenie.Left + Vydelenie.Width
     If Vydelenie.Top < 0 Then Vydelenie.Top = 0
     If Vydelenie.Top > biHeight - 1 Then Vydelenie.Top = biHeight - 1
     PervStroka = Vydelenie.Top + 1
     If Vydelenie.Height < 1 Then Vydelenie.Height = 1
     If Vydelenie.Top + Vydelenie.Height > biHeight Then Vydelenie.Height = biHeight - Vydelenie.Top
     PoslStroka = Vydelenie.Top + Vydelenie.Height
     HScroll3.Value = PervStolb
     HScroll2.Value = PoslStolb
     VScroll3.Value = PervStroka
     VScroll2.Value = PoslStroka
     If Rezerv_X <= Abs(Picture3.Left) And Picture3.Left < 0 And Rezerv_X > 0 Then HScroll1.Value = Rezerv_X
'     'If Rezerv_X > Picture1.Width And Picture2.Left < 0 And HScroll3.Value + Rezerv_X > 0 Then HScroll3.Value = HScroll3.Value + Rezerv_X
     If Rezerv_Y <= Abs(Picture3.Top) And Picture3.Top < 0 And Rezerv_Y > 0 Then VScroll1.Value = Rezerv_Y
   End If
End Select
Label10.Caption = "X:  " & Rezerv_X + 1
Label11.Caption = "Y:  " & Rezerv_Y + 1
Select Case biBitCount
 Case 8
  If bfType = "TG" And (tgaType = 3 Or tgaType = 11) Then
   'если 8 бит/пиксель в градациях серого
   Label16.Caption = "Яркость " & BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1)
  Else
   Label12.Caption = "Красный  " & Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 0)
   Label13.Caption = "Зелёный  " & Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 1)
   Label14.Caption = "Синий  " & Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 2)
   If ChyornoBely <> 0 Then        'если изображение не чёрно-белое, то яркость можно считать по 3 вариантам
      If Option4.Value = True Then   'яркость как среднее арифметическое
       Label16.Caption = "Яркость " & Format(CSng(Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 0) + Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 1) + Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 2)) / 3, "0.0")
      End If
      If Option5.Value = True Then   'яркость как максимальное из яркости красного, синего и зелёного
       If Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 0) > Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 1) Then
        If Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 0) > Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 2) Then
          Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 0)
         Else
          Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 2)
        End If
        Else
        If Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 1) > Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 2) Then
           Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 1)
          Else
           Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 2)
        End If
       End If
      End If
      If Option6.Value = True Then   'яркость = красный * 0,299 + зелёный * 0,587 + синий * 0,114
       Label16.Caption = "Яркость " & Format(CSng(Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 0)) * ДоляКрасного + CSng(Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 1)) * ДоляЗелёного + CSng(Massiv256(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1), 2)) * ДоляСинего, "0.00")
      End If
   End If
  End If
 Case 24
  Label12.Caption = "Красный  " & BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1)
  Label13.Caption = "Зелёный  " & BM_MassivЗ(Rezerv_X + 1, Rezerv_Y + 1)
  Label14.Caption = "Синий  " & BM_MassivС(Rezerv_X + 1, Rezerv_Y + 1)
  If ChyornoBely <> 0 Then        'если изображение не чёрно-белое, то яркость можно считать по 3 вариантам
      If Option4.Value = True Then   'яркость как среднее арифметическое
       Label16.Caption = "Яркость " & Format((CSng(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1)) + CSng(BM_MassivЗ(Rezerv_X + 1, Rezerv_Y + 1)) + CSng(BM_MassivС(Rezerv_X + 1, Rezerv_Y + 1))) / 3, "0.0")
      End If
      If Option5.Value = True Then   'яркость как максимальное из яркости красного, синего и зелёного
       If BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1) > BM_MassivЗ(Rezerv_X + 1, Rezerv_Y + 1) Then
        If BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1) > BM_MassivС(Rezerv_X + 1, Rezerv_Y + 1) Then
          Label16.Caption = "Яркость " & BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1)
         Else
          Label16.Caption = "Яркость " & BM_MassivС(Rezerv_X + 1, Rezerv_Y + 1)
        End If
        Else
        If BM_MassivЗ(Rezerv_X + 1, Rezerv_Y + 1) > BM_MassivС(Rezerv_X + 1, Rezerv_Y + 1) Then
           Label16.Caption = "Яркость " & BM_MassivЗ(Rezerv_X + 1, Rezerv_Y + 1)
          Else
           Label16.Caption = "Яркость " & BM_MassivС(Rezerv_X + 1, Rezerv_Y + 1)
        End If
       End If
      End If
      If Option6.Value = True Then   'яркость = красный * 0,299 + зелёный * 0,587 + синий * 0,114
       Label16.Caption = "Яркость " & Format(CSng(BM_MassivК(Rezerv_X + 1, Rezerv_Y + 1)) * ДоляКрасного + CSng(BM_MassivЗ(Rezerv_X + 1, Rezerv_Y + 1)) * ДоляЗелёного + CSng(BM_MassivС(Rezerv_X + 1, Rezerv_Y + 1)) * ДоляСинего, "0.00")
      End If
     End If
End Select
End Sub

Private Sub Picture3_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Button
 Case 1, 3
 Pervoe_Nazhatie = True
 Screen.MousePointer = 11 'курсор - часы
 Call Uvelichenie
 Screen.MousePointer = 0 'вернуть предыдущий курсор
End Select
End Sub

Private Sub Picture5_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Select Case Button
 Case 1, 3
  If Uvel < 20 Then
    Uvel = Uvel + 1
    Picture5.MouseIcon = Image12.Picture
    Uvelichenie
    HScroll4.LargeChange = Uvel
    VScroll4.LargeChange = Uvel
    Picture5.MouseIcon = Image10.Picture
   Else
    Picture5.MouseIcon = Image11.Picture
  End If
 Case 2, 4
  If Uvel > 1 Then
  Picture5.MouseIcon = Image11.Picture
  Uvel = Uvel - 1
  Call Uvelichenie
  HScroll4.LargeChange = Uvel
  VScroll4.LargeChange = Uvel
  Picture5.MouseIcon = Image10.Picture
  End If
End Select
End Sub

Private Sub Picture5_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Rezerv_X = X
Rezerv_Y = Y
If Rezerv_X < 0 Then Rezerv_X = 0
If Rezerv_X > biWidth * Uvel - Uvel Then Rezerv_X = biWidth * Uvel - Uvel
If Rezerv_Y < 0 Then Rezerv_Y = 0
If Rezerv_Y > biHeight * Uvel - Uvel Then Rezerv_Y = biHeight * Uvel - Uvel
 Label10.Caption = "Х:  " & Rezerv_X \ Uvel + PervStolb
 Label11.Caption = "Y:  " & Rezerv_Y \ Uvel + PervStroka
Select Case bfType
   Case "BM", "BA", "TG"
   Select Case biBitCount
    Case 8
    If bfType = "TG" And (tgaType = 3 Or tgaType = 11) Then
     'если 8 бит/пиксель в градациях серого
     Label16.Caption = "Яркость " & BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
    Else 'если палитра 256 цветов
     Label12.Caption = "Красный  " & Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 0)
     Label13.Caption = "Зелёный  " & Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 1)
     Label14.Caption = "Синий  " & Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 2)
     If ChyornoBely <> 0 Then        'если изображение не чёрно-белое, то яркость можно считать по 3 вариантам
      If Option4.Value = True Then   'яркость как среднее арифметическое
       Label16.Caption = "Яркость " & Format(CSng(Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 0) + Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 1) + Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 2)) / 3, "0.00")
      End If
      If Option5.Value = True Then   'яркость как максимальное из яркости красного, синего и зелёного
       If Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 0) > Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 1) Then
        If Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 0) > Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 2) Then
          Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 0)
         Else
          Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 2)
        End If
        Else
        If Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 1) > Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 2) Then
           Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 1)
          Else
           Label16.Caption = "Яркость " & Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 2)
        End If
       End If
      End If
      If Option6.Value = True Then   'яркость = красный * 0,299 + зелёный * 0,587 + синий * 0,114
       Label16.Caption = "Яркость " & Format(CSng(Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 0)) * ДоляКрасного + CSng(Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 1)) * ДоляЗелёного + CSng(Massiv256(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka), 2)) * ДоляСинего, "0.00")
      End If
     End If
    End If
    
    Case 24
     Label12.Caption = "Красный  " & BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
     Label13.Caption = "Зелёный  " & BM_MassivЗ(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
     Label14.Caption = "Синий  " & BM_MassivС(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
     If ChyornoBely <> 0 Then        'если изображение не чёрно-белое, то яркость можно считать по 3 вариантам
      If Option4.Value = True Then   'яркость как среднее арифметическое
       Label16.Caption = "Яркость " & Format((CSng(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)) + CSng(BM_MassivЗ(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)) + CSng(BM_MassivС(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka))) / 3, "0.00")
      End If
      If Option5.Value = True Then   'яркость как максимальное из яркости красного, синего и зелёного
       If BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka) > BM_MassivЗ(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka) Then
        If BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka) > BM_MassivС(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka) Then
          Label16.Caption = "Яркость " & BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
         Else
          Label16.Caption = "Яркость " & BM_MassivС(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
        End If
        Else
        If BM_MassivЗ(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka) > BM_MassivС(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka) Then
           Label16.Caption = "Яркость " & BM_MassivЗ(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
          Else
           Label16.Caption = "Яркость " & BM_MassivС(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)
        End If
       End If
      End If
      If Option6.Value = True Then   'яркость = красный * 0,299 + зелёный * 0,587 + синий * 0,114
       Label16.Caption = "Яркость " & Format(CSng(BM_MassivК(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)) * ДоляКрасного + CSng(BM_MassivЗ(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)) * ДоляЗелёного + CSng(BM_MassivС(Rezerv_X \ Uvel + PervStolb, Rezerv_Y \ Uvel + PervStroka)) * ДоляСинего, "0.00")
      End If
     End If
    End Select
End Select
End Sub

Private Sub Text1_Change()
TextInfo = LTrim(Text1.Text)
TextInfo = RTrim(TextInfo)
If TextInfo = "" Then Exit Sub
NumberOrNot = True
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then NumberOrNot = False
Next i
If NumberOrNot = True Then 'действительно число
  j = PervStroka
  PervStroka = Val(TextInfo)
  If PervStroka > biHeight Or PervStroka > PoslStroka Or PervStroka < 1 Then
   PervStroka = j
   Text1.BackColor = &H80000018
   Exit Sub
  End If
  Vydelenie.Top = PervStroka - 1
  Vydelenie.Height = PoslStroka - PervStroka + 1
  Text6.Text = Str$(PoslStroka - PervStroka + 1)
  Text1.BackColor = &H80000005
  Call Uvelichenie
  VScroll3.Value = PervStroka
Else
 Text1.BackColor = &H80000018
End If
End Sub

Private Sub Text2_Change()
TextInfo = LTrim(Text2.Text)
TextInfo = RTrim(TextInfo)
If TextInfo = "" Then Exit Sub
NumberOrNot = True
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then NumberOrNot = False
Next i
If NumberOrNot = True Then 'действительно число
  j = PoslStroka
  PoslStroka = Val(TextInfo)
  If PoslStroka > biHeight Or PervStroka > PoslStroka Or PoslStroka < 1 Then
   PoslStroka = j
   Text2.BackColor = &H80000018
   Exit Sub
  End If
  Vydelenie.Height = PoslStroka - PervStroka + 1
  Text6.Text = Str$(PoslStroka - PervStroka + 1)
  Text2.BackColor = &H80000005
  Call Uvelichenie
  VScroll2.Value = PoslStroka
Else
 Text2.BackColor = &H80000018
End If
End Sub

Private Sub Text3_Change()
TextInfo = LTrim(Text3.Text)
TextInfo = RTrim(TextInfo)
If TextInfo = "" Then Exit Sub
NumberOrNot = True
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then NumberOrNot = False
Next i
If NumberOrNot = True Then 'действительно число
  j = PervStolb
  PervStolb = Val(TextInfo)
  If PervStolb > biWidth Or PervStolb > PoslStolb Or PoslStolb - PervStolb + 1 > 256 Or PervStolb <= 0 Then
   PervStolb = j
   Text3.BackColor = &H80000018
   Exit Sub
  End If
  Vydelenie.Left = PervStolb - 1
  Vydelenie.Width = PoslStolb - PervStolb + 1
  Text5.Text = Str$(PoslStolb - PervStolb + 1)
  Text3.BackColor = &H80000005
  Call Uvelichenie
  HScroll3.Value = PervStolb
Else
 Text3.BackColor = &H80000018
End If
End Sub


Sub Text3_KeyPress(KeyAscii As Integer)
Exit Sub
TextInfo = LTrim(Text3.Text)
TextInfo = RTrim(TextInfo)
If TextInfo = "" Then Exit Sub
NumberOrNot = True
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then NumberOrNot = False
Next i
If NumberOrNot = True Then 'действительно число
  j = PervStolb
  PervStolb = Val(TextInfo)
  i = PoslStolb
  If PervStolb > biWidth Or PervStolb > PoslStolb Or PoslStolb - PervStolb + 1 > 256 Then
   PervStolb = j
   Text3.BackColor = &H80000018
   Exit Sub
  End If
  Vydelenie.Left = PervStolb - 1
  Vydelenie.Width = PoslStolb - PervStolb + 1
  Text5.Text = Str$(PoslStolb - PervStolb + 1)
  Text3.BackColor = &H80000005
  Call Uvelichenie
'  If PoslStolb < PervStolb Then
'   PoslStolb = PervStolb
'   Text4.Text = Str$(PoslStolb)
'   Text4.BackColor = &H80000005
'  End If
'  If PoslStolb - PervStolb + 1 <= 256 Then
'   Vydelenie.Width = PoslStolb - PervStolb + 1
'   Text5.Text = Str$(PoslStolb - PervStolb + 1)
'   Text3.BackColor = &H80000005
'   Call Uvelichenie
'  Else
'   PoslStolb = i
'   PervStolb = j
'   Text4.Text = Str$(PoslStolb)
'   Vydelenie.Left = PervStolb - 1
'   Text3.BackColor = &H80000018
'  End If
Else
 Text3.BackColor = &H80000018
End If
End Sub

Private Sub Text4_Change()
TextInfo = LTrim(Text4.Text)
TextInfo = RTrim(TextInfo)
If TextInfo = "" Then Exit Sub
NumberOrNot = True
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then NumberOrNot = False
Next i
If NumberOrNot = True Then 'действительно число
  i = PoslStolb
  PoslStolb = Val(TextInfo)
  If PoslStolb > biWidth Or PervStolb > PoslStolb Or PoslStolb - PervStolb + 1 > 256 Or PoslStolb <= 0 Then
   PoslStolb = i
   Text4.BackColor = &H80000018
   Exit Sub
  End If
  Vydelenie.Width = PoslStolb - PervStolb + 1
  Text5.Text = Str$(PoslStolb - PervStolb + 1)
  Call Uvelichenie
  Text4.BackColor = &H80000005
  HScroll2.Value = PoslStolb
Else
 Text4.BackColor = &H80000018
End If

End Sub

Private Sub Text4_KeyPress(KeyAscii As Integer)
Exit Sub
TextInfo = LTrim(Text4.Text)
TextInfo = RTrim(TextInfo)
If TextInfo = "" Then Exit Sub
NumberOrNot = True
For i = 1 To Len(TextInfo)
  If Not (Asc(Mid(TextInfo, i, 1)) >= 48 And Asc(Mid(TextInfo, i, 1)) <= 57) Then NumberOrNot = False
Next i
If NumberOrNot = True Then 'действительно число
  i = PoslStolb
  PoslStolb = Val(TextInfo)
  j = PervStolb
  
  If PervStolb > biWidth Then
   PoslStolb = i
   Text4.BackColor = &H80000018
   Exit Sub
  End If
  
  If PoslStolb < PervStolb Then
   PervStolb = PoslStolb
   Vydelenie.Left = PervStolb - 1
   Text3.Text = Str$(PervStolb)
  End If
  If PoslStolb - PervStolb + 1 <= 256 Then
   Vydelenie.Width = PoslStolb - PervStolb + 1
   Text5.Text = Str$(PoslStolb - PervStolb + 1)
   Call Uvelichenie
   Text4.BackColor = &H80000005
  Else
   PoslStolb = i
   PervStolb = j
   Text4.BackColor = &H80000018
  End If
End If
End Sub

Private Sub Timer1_Timer()

For i = 144 To 183
Line (353, i)-(353 - (353 - 192) * (i - 144) / (183 - 144), i), RGB(255, 255, 255), B
Next i
If Zagruzka = 1 Then     'если загрузки ещё не было, после того как был вабран файл, то :
 Screen.MousePointer = 11   'курсор с часами
 Picture3.MousePointer = 11
 Picture1.MousePointer = 11
 Image6.Visible = True      'покажем подложку индикатора
 Picture1.Visible = True    'покажем изображение индикатора загрузки
 Picture1.Width = 1         'его ширину в исходное положение
 Picture1.Refresh

 Uvel = 3       'увеличение по умолчанию в 3 раза (больше оригинала)
 Picture3.Visible = False
 Picture2.Visible = False

 'Загрузка графического файла
 FileNum = FreeFile
 Open SelectedFile For Binary As FileNum
 'ОтсчётСекунд = Minute(Now) * 60 + Second(Now)

 ШиринаИндикатора = 0
 МножительИндикатора = 350 / biHeight '466 вся длина, 466*3/4=350
 Select Case bfType
  Case "BM", "BA"
     biHeightPlus1 = biHeight + 1
     Select Case biBitCount
      Case 8
        LongDword = biWidth * biBitCount / 8 + Vyravnivanie_Na4
        bfOffbitsMinus = bfOffbits - LongDword
         For j = 1 To biHeight
          Bayty_Do_Stroki = j * LongDword + bfOffbitsMinus
          Ордината = biHeightPlus1 - j
          For i = 1 To biWidth
           Get FileNum, i + Bayty_Do_Stroki, BM_MassivК(i, Ордината)
          Next i
          If CSng(j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
          ' Picture1.Width = j * 466 \ biHeight
           ШиринаИндикатора = CSng(j) * МножительИндикатора
           Picture1.Width = CInt(ШиринаИндикатора)
           Picture1.Refresh
          End If
         Next j
       Case 24

        'LongDword - сколько байт в строке
        LongDword = biWidth * biBitCount / 8 + Vyravnivanie_Na4
'       'If (bfSize - LongDword * biHeight) - bfOffbits <> 0 Then
'        If ОстатокПослеВычВыравнивания <> 0 Then
'         bfOffbitsMinus = (bfSize - LongDword * biHeight) - LongDword
'         'bfOffbitsMinus = bfOffbits + ОстатокПослеВычВыравнивания - LongDword
'        Else
         'bfOffbitsMinus =(j-1) * байты строки + bfOffbits
         bfOffbitsMinus = bfOffbits - LongDword
'        End If
        For j = 1 To biHeight
         Bayty_Do_Stroki0 = j * LongDword + bfOffbitsMinus
         Bayty_Do_Stroki1 = Bayty_Do_Stroki0 - 1
         Bayty_Do_Stroki2 = Bayty_Do_Stroki0 - 2
         Ордината = biHeightPlus1 - j
         'Ордината2 = biHeight - j 'j - 1
         For i = 1 To biWidth
          Абсцисса = i * 3
          Get FileNum, Абсцисса + Bayty_Do_Stroki2, BM_MassivС(i, Ордината)
          Get FileNum, Абсцисса + Bayty_Do_Stroki1, BM_MassivЗ(i, Ордината)
          Get FileNum, Абсцисса + Bayty_Do_Stroki0, BM_MassivК(i, Ордината)
          
          'Get FileNum, Абсцисса + Bayty_Do_Stroki2, СиняяСост
          'Get FileNum, Абсцисса + Bayty_Do_Stroki1, ЗелёнаяСост
          'Get FileNum, Абсцисса + Bayty_Do_Stroki0, КраснаяСост
          'BM_MassivК(i, Ордината) = КраснаяСост
          'BM_MassivЗ(i, Ордината) = ЗелёнаяСост
          'BM_MassivС(i, Ордината) = СиняяСост
'          If КраснаяСост <> ЗелёнаяСост Or СиняяСост <> КраснаяСост Then
          '  If Not (КраснаяСост = 255 And ЗелёнаяСост = 255 And СиняяСост = 255) Then
          '   Picture3.PSet (i - 1, Ордината2), &H2000000 Or RGB(КраснаяСост, ЗелёнаяСост, СиняяСост)
          '   'Picture3.PSet (i - 1, Ордината2), &H2000000 Or RGB(BM_MassivК(i, j), BM_MassivЗ(i, j), BM_MassivС(i, j))
          '  End If
         Next i
         If CSng(j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
         ' Picture1.Width = j * 466 \ biHeight
          ШиринаИндикатора = CSng(j) * МножительИндикатора
          Picture1.Width = CInt(ШиринаИндикатора)
          Picture1.Refresh
         End If
        Next j
     End Select
     
  Case "TG"
     Select Case tgaType
      Case 1, 9  'biBitCount=8 , т.е. с палитрой 256 цветов
        If tgaОтсчётИзображенияПоY = 0 And ОбходCверхуВниз = 0 Then
        'Начало изображения слева снизу
         For j = biHeight To 1 Step -1
           БайтыДоСтроки0 = (biHeight - j) * biWidth + 786
           '787 - это 19 + 2 + 255*3 + 1 '18 байт заголовок, 19-21 цвет с 0 индексом и ещё 765 до конца палитры
           For k = 1 To biWidth
            Get FileNum, k + БайтыДоСтроки0, BM_MassivК(k, j)
           Next k
          If CSng(biHeight - j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
              ШиринаИндикатора = CSng(biHeight - j) * МножительИндикатора
             ' Picture1.Width = j * 466 \ biHeight
              Picture1.Width = CInt(ШиринаИндикатора)
              Picture1.Refresh
          End If
         Next j
        ElseIf tgaОтсчётИзображенияПоY = biHeight And ОбходCверхуВниз = 1 Then
        'Начало изображения слева сверху.
         For j = 1 To biHeight
           БайтыДоСтроки0 = (biHeight - j) * biWidth + 786
           '787 - это 19 + 2 + 255*3 + 1 '18 байт заголовок, 19-21 цвет с 0 индексом и ещё 765 до конца палитры
           For k = 1 To biWidth
            Get FileNum, k + БайтыДоСтроки0, BM_MassivК(k, j)
           Next k
           If CSng(j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
              ШиринаИндикатора = CSng(j) * МножительИндикатора
             ' Picture1.Width = j * 466 \ biHeight
              Picture1.Width = CInt(ШиринаИндикатора)
              Picture1.Refresh
           End If
         Next j
        End If
      Case 3, 11 'biBitCount=8 , т.е. в градациями серого
        If tgaОтсчётИзображенияПоY = 0 And ОбходCверхуВниз = 0 Then
        'Начало изображения слева снизу
         For j = biHeight To 1 Step -1
           БайтыДоСтроки0 = (biHeight - j) * biWidth + 18 '18 байт заголовок
           For k = 1 To biWidth
            Get FileNum, k + БайтыДоСтроки0, BM_MassivК(k, j)
           Next k
           If CSng(biHeight - j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
              ШиринаИндикатора = CSng(biHeight - j) * МножительИндикатора
             ' Picture1.Width = j * 466 \ biHeight
              Picture1.Width = CInt(ШиринаИндикатора)
              Picture1.Refresh
           End If
         Next j
        ElseIf tgaОтсчётИзображенияПоY = biHeight And ОбходCверхуВниз = 1 Then
        'Начало изображения слева сверху.
         For j = 1 To biHeight
           БайтыДоСтроки0 = (biHeight - j) * biWidth + 18 '18 байт заголовок
           For k = 1 To biWidth
            Get FileNum, k + БайтыДоСтроки0, BM_MassivК(k, j)
           Next k
           If CSng(j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
              ШиринаИндикатора = CSng(j) * МножительИндикатора
             ' Picture1.Width = j * 466 \ biHeight
              Picture1.Width = CInt(ШиринаИндикатора)
              Picture1.Refresh
           End If
         Next j
        End If
        Label12.Caption = ""
        Label13.Caption = ""
        Label14.Caption = ""
      Case 2, 10 'biBitCount=24 , т.е. полноцветное изображение
        LongDword = biWidth * tgaClrBitPerPixel / 8
        'biHeightPlus1 = biHeight + 1
        If tgaОтсчётИзображенияПоY = 0 And ОбходCверхуВниз = 0 Then
         'Начало изображения слева снизу
         For j = biHeight To 1 Step -1
           БайтыДоСтроки0 = (biHeight - j) * LongDword + 18
           БайтыДоСтроки1 = БайтыДоСтроки0 - 1
           БайтыДоСтроки2 = БайтыДоСтроки0 - 2
           'Ордината = biHeightPlus1 - j
           For i = 1 To biWidth
              Абсцисса = i * 3
              Get FileNum, Абсцисса + БайтыДоСтроки2, BM_MassivС(i, j) 'Синяя сост.
              Get FileNum, Абсцисса + БайтыДоСтроки1, BM_MassivЗ(i, j) 'Зелёная сост.
              Get FileNum, Абсцисса + БайтыДоСтроки0, BM_MassivК(i, j) 'Красная сост.
           Next i
           If CSng(biHeight - j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
              ШиринаИндикатора = CSng(biHeight - j) * МножительИндикатора
             ' Picture1.Width = j * 466 \ biHeight
              Picture1.Width = CInt(ШиринаИндикатора)
              Picture1.Refresh
           End If
         Next j
        ElseIf tgaОтсчётИзображенияПоY = biHeight And ОбходCверхуВниз = 1 Then
         'Начало изображения слева сверху.
         For j = 1 To biHeight
           БайтыДоСтроки0 = (j - 1) * LongDword + 18
           БайтыДоСтроки1 = БайтыДоСтроки0 - 1
           БайтыДоСтроки2 = БайтыДоСтроки0 - 2
           For i = 1 To biWidth
              Абсцисса = i * 3
              Get FileNum, Абсцисса + БайтыДоСтроки2, BM_MassivС(i, j) 'Синяя сост.
              Get FileNum, Абсцисса + БайтыДоСтроки1, BM_MassivЗ(i, j) 'Зелёная сост.
              Get FileNum, Абсцисса + БайтыДоСтроки0, BM_MassivК(i, j) 'Красная сост.
        
           Next i
           If CSng(j) * МножительИндикатора - ШиринаИндикатора >= 2 Then
              ШиринаИндикатора = CSng(j) * МножительИндикатора
             ' Picture1.Width = j * 466 \ biHeight
              Picture1.Width = CInt(ШиринаИндикатора)
              Picture1.Refresh
           End If
         Next j
        End If
     End Select
 End Select
 Close FileNum
 Screen.ActiveForm.PaletteMode = 2           'Установим палитру для 256 цветного режима экрана, режимы 16 и 16 млн. цветов это игнорируют
 Screen.ActiveForm.Palette = Picture3.Picture
 Call ОтрисовкаИзображения
 'MsgBox "Загрузка длилась " & Minute(Now) * 60 + Second(Now) - ОтсчётСекунд
 Screen.ActiveForm.PaletteMode = 2           'Установим палитру для 256 цветного режима экрана, режимы 16 и 16 млн. цветов это игнорируют
 Screen.ActiveForm.Palette = Picture3.Picture
 Call НастройкаИзображения

 Call Uvelichenie
 Image1.Visible = True
 Image2.Visible = True
 Image3.Visible = True
 Image6.Visible = False
 For i = 1 To 25
  Picture1.Height = 26 - i
 Next i
 Picture1.Visible = False
ElseIf Zagruzka > 1 Then
 Timer1.Interval = 0
 Call ОтрисовкаИзображения
 Call НастройкаИзображения
End If
Picture3.Visible = True
Picture2.Visible = True
Zagruzka = Zagruzka + 1
Screen.MousePointer = 0
Picture3.MousePointer = 2
Picture1.MousePointer = 0
End Sub

Private Sub Timer2_Timer()
Select Case ЦветВыделения
 Case 2
 Vydelenie.BorderColor = RGB(ЦветВыделенияК \ 4, ЦветВыделенияК, ЦветВыделенияК \ 4)
 Case 3
 Vydelenie.BorderColor = RGB(ЦветВыделенияК \ 4, ЦветВыделенияК \ 4, ЦветВыделенияК)
 Case Else
 Vydelenie.BorderColor = RGB(ЦветВыделенияК, ЦветВыделенияК \ 4, ЦветВыделенияК \ 4)
End Select
If ПроявлениеЗатухание = True Then
 ЦветВыделенияК = ЦветВыделенияК + 30
 If ЦветВыделенияК > 255 Then
  ЦветВыделенияК = 255
  ПроявлениеЗатухание = False
 End If
Else
 ЦветВыделенияК = ЦветВыделенияК - 30
 If ЦветВыделенияК < 83 Then
  ЦветВыделенияК = 83
  ПроявлениеЗатухание = True
 End If
End If
End Sub

Private Sub VScroll1_Change()
Picture3.Top = -VScroll1.Value
End Sub

Private Sub VScroll1_Scroll()
Picture3.Top = -VScroll1.Value
End Sub

Private Sub Uvelichenie() 'прорисовка увеличенного фрагмента изображения
    Label9.Caption = "Масштаб " & Uvel * 100 & "%"
    Label9.Visible = True
    Picture4.Visible = False
    Picture5.Visible = False
    Picture5.Width = (PoslStolb - PervStolb + 1) * Uvel
    Picture5.Height = (PoslStroka - PervStroka + 1) * Uvel

        If Picture5.Height < 169 Then
           Picture4.Top = 184 + (169 - Picture5.Height) / 2
           Picture4.Height = Picture5.Height
           VScroll4.Visible = False
         Else
           Picture4.Top = 184
           Picture4.Height = 169
           VScroll4.Min = 0
           VScroll4.Max = Picture5.Height - 169
           VScroll4.Visible = True
        End If
        If Picture5.Width < 153 Then
           Picture4.Left = 0 + (153 - Picture5.Width) / 2
           Picture4.Width = Picture5.Width
           HScroll4.Visible = False
         Else
           Picture4.Left = 0
           Picture4.Width = 153
           HScroll4.Min = 0
           HScroll4.Max = Picture5.Width - 153
           HScroll4.Top = Picture4.Top + Picture4.Height
           HScroll4.Visible = True
        End If
        VScroll4.Left = Picture4.Left + Picture4.Width
        
   If Uvel > 6 Then   ' если увеличение больше, чем в 6 раз, то рисовать увеличенные точки через промежутки
                      ' для создания сетки
      pervStrokaPlus2 = PervStroka * Uvel - (Uvel - 2)
      pervStolbPlus2 = PervStolb * Uvel - (Uvel - 2)
      Picture5.Cls
    Else
      pervStrokaPlus2 = PervStroka * Uvel - (Uvel - 1)
      pervStolbPlus2 = PervStolb * Uvel - (Uvel - 1)
   End If
   
   ПоправкаКАбсциссе = PervStolb * Uvel
   ChyornoBely = 0
    Select Case bfType
    Case "BM", "BA", "TG"
     Select Case biBitCount
       Case 8
        If bfType = "TG" And (tgaType = 3 Or tgaType = 11) Then
        'если 8 бит/пиксель в градациях серого
         For j = PervStroka To PoslStroka
          Ордината = j * Uvel - pervStrokaPlus2
          Ордината2 = (j - PervStroka) * Uvel
          For i = PervStolb To PoslStolb
           'КраснаяСост = BM_MassivК(i, j)
           Picture5.Line (i * Uvel - pervStolbPlus2, Ордината)-(i * Uvel - ПоправкаКАбсциссе, Ордината2), &H2000000 Or RGB(BM_MassivК(i, j), BM_MassivК(i, j), BM_MassivК(i, j)), BF
          Next i
         Next j
        Else
         For j = PervStroka To PoslStroka
          Ордината = j * Uvel - pervStrokaPlus2
          Ордината2 = (j - PervStroka) * Uvel
          For i = PervStolb To PoslStolb
           КраснаяСост = Massiv256(BM_MassivК(i, j), 0)
           ЗелёнаяСост = Massiv256(BM_MassivК(i, j), 1)
           СиняяСост = Massiv256(BM_MassivК(i, j), 2)
           If КраснаяСост <> ЗелёнаяСост Or СиняяСост <> КраснаяСост Then
              Picture5.Line (i * Uvel - pervStolbPlus2, Ордината)-(i * Uvel - ПоправкаКАбсциссе, Ордината2), &H2000000 Or RGB(КраснаяСост, ЗелёнаяСост, СиняяСост), BF
              ChyornoBely = ChyornoBely + 1
            Else
             Picture5.Line (i * Uvel - pervStolbPlus2, Ордината)-(i * Uvel - ПоправкаКАбсциссе, Ордината2), &H2000000 Or RGB(КраснаяСост, КраснаяСост, КраснаяСост), BF
           End If
          Next i
         Next j
        End If
       Case 24
        For j = PervStroka To PoslStroka
         Ордината = j * Uvel - pervStrokaPlus2
         Ордината2 = (j - PervStroka) * Uvel
         For i = PervStolb To PoslStolb
          КраснаяСост = BM_MassivК(i, j)
          ЗелёнаяСост = BM_MassivЗ(i, j)
          СиняяСост = BM_MassivС(i, j)
          If КраснаяСост <> ЗелёнаяСост Or СиняяСост <> КраснаяСост Then
            Picture5.Line (i * Uvel - pervStolbPlus2, Ордината)-(i * Uvel - ПоправкаКАбсциссе, Ордината2), &H2000000 Or RGB(КраснаяСост, ЗелёнаяСост, СиняяСост), BF
            ChyornoBely = ChyornoBely + 1
           Else
            Picture5.Line (i * Uvel - pervStolbPlus2, Ордината)-(i * Uvel - ПоправкаКАбсциссе, Ордината2), &H2000000 Or RGB(КраснаяСост, КраснаяСост, КраснаяСост), BF
          End If
         Next i
        Next j
      End Select
    ' здесь можно добавить обработку других форматов
    End Select
    If ChyornoBely = 0 Then
      Option1.Visible = False
      Option2.Visible = False
      Option3.Visible = False
      Option4.Visible = False
      Option5.Visible = False
      Option6.Visible = False
      Label17.Visible = False
      Label18.Visible = False
      Label19.Visible = False
      Label20.Visible = False
      Label21.Visible = False
      Label22.Visible = False
      Label15.Visible = True
     Else
      Option1.Visible = True
      Option2.Visible = True
      Option3.Visible = True
      Option4.Visible = True
      Option5.Visible = True
      Option6.Visible = True
      Label17.Visible = True
      Label18.Visible = True
      Label19.Visible = True
      Label20.Visible = True
      Label21.Visible = True
      Label22.Visible = True
      Label15.Visible = False
    End If
    Picture5.Top = 0
    Picture5.Left = 0
    Picture5.Visible = True
    Picture4.Visible = True
  'Line (Picture4.Left + Picture4.Width, Picture4.Top)-(Label5.Left, Label5.Top), RGB(255, 255, 255)
  Line11.X1 = Picture4.Left + Picture4.Width
  Line11.Y1 = Picture4.Top
  Line11.X2 = Label5.Left
  Line11.Y2 = Label5.Top
  
  Line12.X1 = Picture4.Left + Picture4.Width
  Line12.Y1 = Picture4.Top + Picture4.Height
  Line12.X2 = Label5.Left
  Line12.Y2 = Label5.Top + Label5.Height
  'Line (Picture4.Left + Picture4.Width, Picture4.Top + Picture4.Height)-(Label5.Left, Label5.Top + Label5.Height), RGB(255, 255, 255)
End Sub

Private Sub VScroll2_Change()
PoslStroka = VScroll2.Value
If PoslStroka < PervStroka Then
 VScroll3.Value = VScroll2.Value
 PervStroka = PoslStroka
 Text1.Text = PervStroka
End If
Text2.Text = PoslStroka
Text6.Text = Str$(PoslStroka - PervStroka + 1)
Vydelenie.Top = PervStroka - 1
Vydelenie.Height = PoslStroka - PervStroka + 1
If Pervoe_Nazhatie = True Then 'прорисуем
 Screen.MousePointer = 13
 Uvelichenie
 Screen.MousePointer = 0
End If
End Sub

Private Sub VScroll3_Change()
PervStroka = VScroll3.Value
If PoslStroka < PervStroka Then
 VScroll2.Value = VScroll3.Value
 PoslStroka = PervStroka
 Text2.Text = PoslStroka
End If
Text1.Text = PervStroka
Text6.Text = Str$(PoslStroka - PervStroka + 1)
Vydelenie.Top = PervStroka - 1
Vydelenie.Height = PoslStroka - PervStroka + 1
If Pervoe_Nazhatie = True Then 'прорисуем
 Screen.MousePointer = 13
 Uvelichenie
 Screen.MousePointer = 0
End If
End Sub

Private Sub VScroll3_Scroll()
PervStroka = VScroll3.Value
If PoslStroka < PervStroka Then
 VScroll2.Value = VScroll3.Value
 PoslStroka = PervStroka
 Text2.Text = PoslStroka
End If
Text1.Text = PervStroka
Text6.Text = Str$(PoslStroka - PervStroka + 1)
Vydelenie.Top = PervStroka - 1
Vydelenie.Height = PoslStroka - PervStroka + 1
End Sub

Private Sub VScroll4_Change()
Picture5.Top = -VScroll4.Value
End Sub

Private Sub VScroll4_Scroll()
Picture5.Top = -VScroll4.Value
End Sub

Sub Podbor_Cvetov()
If ChyornoBely = 0 Then   'чёрно-белый (градации серого)
  Select Case Red
   Case 0 To 25
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 1
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 2
   Case 26 To 89
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 56
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 2
   Case 90 To 139
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 16
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
   Case 140 To 171
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 48
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
   Case 172 To 223
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 15
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
   Case Else '223 To 255
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 2
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
  End Select
 Else 'не только чёрно-белый в выбранном прямоугольнике
  If Red = Green And Red = Blue Then 'чёрно-белый
   Select Case Red
   Case 0 To 25
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 1
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 2
   Case 26 To 89
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 56
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 2
   Case 90 To 139
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 16
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
   Case 140 To 171
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 48
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
   Case 172 To 223
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 15
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
   Case Else '223 To 255
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = 2
    ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = 1
  End Select
  Else
  
   Minimum_Cvetov = 255
   For k = 0 To 46
    'наименьшее расстояние в метрике "городских кварталов
    Blizayshiy_Cvet = Abs(Red - Cveta_Excel(k, 1)) + Abs(Green - Cveta_Excel(k, 2)) + Abs(Blue - Cveta_Excel(k, 3))
    If Blizayshiy_Cvet < Minimum_Cvetov Then
     Minimum_Cvetov = Blizayshiy_Cvet
     Minimum_Nomer_Cveta = k
    End If
    If Minimum_Cvetov < 18 Then Exit For 'если меньше 18 градаций, то наилучший уже найден
   Next k
   ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 1) = Cveta_Excel(Minimum_Nomer_Cveta, 4) 'цвет фона
   ExportFon(i - PervStrokaMinus1, j - PervStolbMinus1, 2) = Cveta_Excel(Minimum_Nomer_Cveta, 5) 'цвет текста
 End If
End If
End Sub

