16 млн. цветов в диаграмме

Программирование на Visual Basic for Applications
K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

16 млн. цветов в диаграмме

Сообщение K.Sergey » 27.08.2005 (Сб) 11:57

Гуру, помогите!

В диаграммах Office (как в Excel, так и в MS Graph) ограничено количество применяемых цветов в диаграммах. Нельзя применить более 56 оттенков. Более того, очень неудобно изменять эти стандартные 56 цветов.
Есть идея сделать надстройку, которая позволит пользователю выбрать нужный цвет, по RGB сохранит временный файл размером в 1 пиксел, назначит этот файл требуемому столбцу на диаграмме и "растянет" его на весь столбец. Далее файл может быть удален.
Таким образом, можно будет обеспечить 16 млн цветов.
Надеюсь, понятно объяснил.

Проблема состоит в том, что я не знаю как создать файл размером в 1 пиксел с требуемым цветом. Предполагаю, что это можно сделать посредством API. Но в этой области я не силен... :(
Life is what happens to us when we are planning to do something else...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.08.2005 (Сб) 12:15

Интересная мысль.
Неужели стОит? :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Заливка в диаграммах

Сообщение K.Sergey » 27.08.2005 (Сб) 14:18

Стоит - не то слово!
Просто жизненно НЕОБХОДИМО!
По роду работы в месяц мне нужно строить до 200 графиков в PowerPoint. Как эти стандартные цвета достали - не описать русской речью (насколько бы она не была богата).
Думаю, таких как я не мало. Хотелось бы сделать законченную удобную настройку и поделиться со всеми жаждующими...
Life is what happens to us when we are planning to do something else...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 27.08.2005 (Сб) 15:16

Ну тады на :)

Код: Выделить всё
Private Type BITMAPFILEHEADER
  bfType As Integer
  bfSize As Long
  bfReserved1 As Integer
  bfReserved2 As Integer
  bfOffBits As Long
End Type

Private Type RGBQUAD
  rgbBlue As Byte
  rgbGreen As Byte
  rgbRed As Byte
  rgbReserved As Byte
End Type

Private Type BITMAPINFOHEADER
  biSize As Long
  biWidth As Long
  biHeight As Long
  biPlanes As Integer
  biBitCount As Integer
  biCompression As Long
  biSizeImage As Long
  biXPelsPerMeter As Long
  biYPelsPerMeter As Long
  biClrUsed As Long
  biClrImportant As Long
End Type

Private Type BITMAPINFO_1BPP
  bmiHeader As BITMAPINFOHEADER
  bmiColors(0 To 1) As RGBQUAD
End Type

Private Sub MakeBMP(path As String, ByVal Color As Long)
  Dim f As Integer
  Dim bfh As BITMAPFILEHEADER, bi1 As BITMAPINFO_1BPP, t As Long
 
  f = FreeFile
  Open path For Binary Access Write As #f
 
  With bi1
    With .bmiHeader
      .biSize = Len(bi1.bmiHeader)
      .biWidth = 1
      .biHeight = 1
      .biPlanes = 1
      .biBitCount = 1
      .biCompression = 0
      .biSizeImage = 0
      .biClrUsed = 1
      .biClrImportant = 1
    End With
   
    With .bmiColors(0)
      .rgbRed = Color And &HFF&
      .rgbGreen = (Color And &HFF00&) \ &H100
      .rgbBlue = (Color And &HFF0000) \ &H10000
    End With
  End With
 
 
  Put #f, , &H4D42
 
  t = Len(bfh) + Len(bi1) + 4
  Put #f, , t
 
  t = 0
  Put #f, , t
 
  t = Len(bfh) + Len(bi1)
  Put #f, , t
 
  Put #f, , bi1
 
  t = 0
  Put #f, , t
 
  Close #f
End Sub
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

K.Sergey
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 115
Зарегистрирован: 11.10.2004 (Пн) 0:42
Откуда: Санкт-Петербург

Сообщение K.Sergey » 27.08.2005 (Сб) 20:16

GSerg, мой тебе бесконечный респект! :cheers:
Life is what happens to us when we are planning to do something else...


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 59

    TopList