Что нового

Создать свой файл ресурсов

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Нужно создать свой файл ресурсов такого содержания:

NameRESSKINCode

Требуется для того чтобы запихнуть нужные картинки в один файл с маркером на код этой картинки, далее мы ищем маркер например "1.png" - это Name, если находим то отделяем Name от Code разделителем RESSKIN а Code записываем в новый файл или переводим в бинарный код и выводим из функции Return'ом

1е сделал:

Код:
Func Skin_WriteFile($hFile, $hBitmap)
	$sName = StringSplit($hBitmap, "\")
	Local $shTemp = $sName[$sName[0]] & "RESSKIN" & ""
	$shFile = FileOpen($hBitmap, 16)
	While 1
		$sRead = FileReadLine($shFile)
		If @error = -1 Then ExitLoop
		$shTemp &= BinaryToString($sRead) & @CRLF
	WEnd
	FileWriteLine($hFile, $shTemp)
EndFunc


Как теперь получить код? ни один ЯП же ни читает 00!
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А зачем такие сложности?
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
А как можно проще сделать? только без dll, хочется сделать поддержку смены скинов
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Вы хотите создать отдельный файл, в котором будут находиться все картинки, относящиеся к заданному скину?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Советую сделать следующим образом. В начале файла стоит таблица (272 байта), или на ваше усмотрение.

Сигнатура (4 байта)
Версия (4 байта)
Количество картинок (4 байта)
Резерв (4 байта)
Комментарий (256 байт)

Далее идут записи по 264 байта, котороые определяют название файла-картинки, размер и местоположение в файле.

Название (256 байт)
Смещение относительно начала файла (4 байта)
Размер файла-картинки в байтах (4 байта)

После чего следуют данные файлов-картинок в том виде в котором они записаны на диск.

Идея понятна?
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Идея понятна, не понятно как такое реализовать... :scratch:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Да не так уж и сложно.

:smile:

Если интересно, то позже сделаю.
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
Спасибо Вам большое за помощь, я хочу реализовать смену шкур на AutoIt а потом выложить на форум или сайт открыть, где будут проходить улучшения, дополнения, и собственно создание самих файл-скинов :smile:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ну так ван нужен алгоритм или нет?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Тогда вопрос. В каком виде на выходе (после изъятия из файла) должны быть картинки? Как массив из Binary или массив из структур? И какое разрешение для файла скина планируете?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Yashied [?]
И какое расширение для файла скина планируете?

Yashied если вы будите писать функцию, IMHO может расширение задавать как параметр?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Garrett сказал(а):
Yashied если вы будите писать функцию, IMHO может расширение задавать как параметр?

Я спрашивал для сигнатуры. Конечно расширение файла может быть любое.

:smile:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
OffTopic:
Семён Семёнович. :-[
Понял :smile:
 
Автор
V

Viktor1703

AutoIT Гуру
Сообщения
1,535
Репутация
413
OffTopic:

Чуть - чуть не в тему, вот что уже получилось с окном: Aero
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Мне нравится ваша задумка.

P.S

Белый текст на прозрачном фоне выглядит не очень... Попробуйте поиграться со следующей функцией (второй параметр) перед отрисовкой текста.

Код:
Func _GDIPlus_GraphicsSetTextRenderingHint($hGraphics, $iTextRenderingHint)

	Local $Ret = DllCall($ghGDIPDll, 'uint', 'GdipSetTextRenderingHint', 'ptr', $hGraphics, 'int', $iTextRenderingHint)

	If (@error) Or ($Ret[0]) Then
		Return SetError(@error, @extended, 0)
	EndIf
	Return 1
EndFunc   ;==>_GDIPlus_GraphicsSetTextRenderingHint
 
Верх