purebasic.info

PureBasic forum
Текущее время: Пт апр 27, 2018 9:20 am

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
СообщениеДобавлено: Чт окт 19, 2017 11:52 am 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1608
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
так я когда не понимаю что в коде происходит - беру на веру и использую :)))) благо что мне софт, отвечающий за жизни людей, пока создавать не приходится.

сейчас вот думаю о функции вставки изображения в мое изображение. мое базовое в массиве. вот думаю надо вставляемое изображение тоже переводить в массив и "вписывать" этот массив в оригинальный.

можно конечно просто шлепнуть вставляемую картинку в базовую и запустить перебор всего изображения через point - но вдруг там два цвета где-то в базовом изображении будут одинаковые? этот point слепит эти 2 цвета в один. поэтому я думаю запилить это "вписание" мелкого массива в более крупный. это сохранит все номера цветов правильно. но через point гораздо проще это сделать. там заморачиваться с функцией вписалова не нужно. но все равно прогрессом доволен :)


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Пт окт 20, 2017 3:44 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1608
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
решил малой кровью - через point. однако теперь назрел другой вопрос.

есть конфиги вывода изображения, в котором содержится инфа о смещении по х и у, зеркалирование по х или у, ну и сам номер изображения. частично я их предварительно рисую, а частично остаются не отрисованными. вот потом у меня значит идет вывод:
нарисовать временное изображение из редактора графики - то есть что там накалякал
нарисовать все другие изображения наложением из конфига (то есть в конфиге может быть 1, 2, 3 и тд изображений друг на друга накладывающихся)
вот те которые уже нарисованы - проблем нет. там что-то типа такого:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
If StartDrawing(CanvasOutput(#GFXEditorDEMO9blocks))
  For i = 0 To ArraySize(Array())
    If IsImage(Array(i))
      DrawAlphaImage(Array(i), 0, 0)
    Else
      For l = 0 To 100
        Plot(l, 0, RGB(100,100,100))
      Next
    EndIf
  Next
  StopDrawing()
EndIf


конечно сложнее... но вот как бы находясь внутри StartDrawing, когда он рисует в цикле точки - чтоб эти точки рисовались в отдельную картинку. каждому изображению свой отдельный StartDrawing пилить? тогда можно. все нарисованные сразу выводить в канвас, а которого не существует сначала рисовать в свое отдельное изображение и только потом уже готовое в канвас. просто это получается вагон StartDrawing... тут-же получается StartDrawing всего одна штука. как поступить?


Вернуться наверх
 Профиль  
 
СообщениеДобавлено: Вс окт 29, 2017 1:41 pm 
Не в сети
профессор

Зарегистрирован: Пт фев 20, 2009 12:57 pm
Сообщений: 1608
Откуда: Алматы
Благодарил (а): 13 раз.
Поблагодарили: 43 раз.
Пункты репутации: 5
в муках рожается мой недоредактор :) логистика куда что сохранять просто дичайшая. один из вопросов что-то ничего в голову не приходит. есть картинка в массиве:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
Enumeration
  #File
EndEnumeration
 
Structure colorarraystr
  Array Y.u(0)
EndStructure
 
markx = 16
marky = 16
 
Global Dim X.colorarraystr(markx)
For i = 0 To markx
  ReDim X(i)\Y(marky)
Next
 
; типа внесенние данных
X(0)\Y(0) = 1
X(10)\Y(0) = 1
X(0)\Y(10) = 1
 
                      If CreateFile(#File, "D:\test")
                        x = 0
                        y = 0
                        xlim = 8
                 
                        Repeat
                         
                          ; создание переменной для записи
                          first = X(x)\Y(y)
                          x = x + 1
                          second = X(x)\Y(y)
                          x = x + 1
                          Number = first << 4
                          Number + second
                   
                          WriteAsciiCharacter(#File, Number)
                         
                          ; отлов "конца" файла
                          If x = markx And y = marky-1
                            Break
                          EndIf
                         
                          ; писать данные надо сверху вниз по 8х8
                          If x = xlim
                            x = xlim - 8
                            y = y + 1
                            If y = marky
                              y = 0
                              x = xlim
                              xlim = xlim + 8
                            EndIf
                          EndIf
                   
                        ForEver                        
                       
                        CloseFile(#File)
                      EndIf



то есть при записи 16х16 картинки она запишется вся полностью. и файл будет 128 байт. (8х8х4)/2
8x8 размер тайла - блока картинки
4 кубика в картинке, то есть размер 2х2
разделить на 2 - так как 4 битное изображение. в 1 байте - 2 пикселя.

проблема заключается в том, что хоть типоразмер 2х2, но если последние тайлы (8х8) прозрачные, то они не должны сохранятся. то есть вместо 128 байт файл может быть 96 байт скажем. вот как бы сделать сохранение по подобному алгоритму? то есть пишет блоки сверху вниз, и ежели в конце пустые блоки - все 8х8 64 пикселя с 0 цветом, то не писать в файл эту часть.
Изображение


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 78 ]  На страницу Пред.  1, 2, 3, 4, 5, 6

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB