Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк при копировании Image в другой Bitmap / 6 сообщений из 6, страница 1 из 1
02.12.2021, 14:50
    #40116725
NikolasGood
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк при копировании Image в другой Bitmap
Столкнулся с глюком которого никогда не замечал/встречал.

Есть картинка в img1
Если я её копирую в новый созданный BitMap1

Код: pascal
1.
BitMap1:= img1.Picture.Bitmap;



то разумеется он содержит в себе пиксели этой картинки. Всё правильно.
Но если я меняю картинку в img1 через
Код: pascal
1.
CopyRect();



то и в том новом BitMap1 она тоже меняется, хотя я больше не обновлял его пиксели. Я хочу чтобы картинка в BitMap1 менялась только когда я это назначаю, а не каждый раз как меняется в img1

Почему так и как от этого избавится?
...
Рейтинг: 0 / 0
02.12.2021, 14:54
    #40116726
defecator
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк при копировании Image в другой Bitmap
NikolasGood
Столкнулся с глюком которого никогда не замечал/встречал.

Есть картинка в img1
Если я её копирую в новый созданный BitMap1

Код: pascal
1.
BitMap1:= img1.Picture.Bitmap;



ты не копируешь картинку, в BitMap1 у тебя просто ссылка ровно на тот же битмап.

Чтобы скопировать, нужно примерно так:

Код: pascal
1.
2.
BitMap1 := TBitmap.Create ;
Bitmap1.Assign(img1.Picture.Bitmap) ;
...
Рейтинг: 0 / 0
02.12.2021, 14:57
    #40116727
NikolasGood
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк при копировании Image в другой Bitmap
defecator, Спасибо, я так и думал что проблема в программисте )))
...
Рейтинг: 0 / 0
02.12.2021, 15:09
    #40116730
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк при копировании Image в другой Bitmap
defecator
ты не копируешь картинку, в BitMap1 у тебя просто ссылка ровно на тот же битмап.

Плюсом еще и утечки памяти.

Лучше смотреть в сторону .Assign
...
Рейтинг: 0 / 0
02.12.2021, 15:18
    #40116736
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк при копировании Image в другой Bitmap
wadmanЛучше смотреть в сторону .Assign

Который, вообще-то, скопирует только Handle.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
02.12.2021, 17:13
    #40116773
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Глюк при копировании Image в другой Bitmap
Dimitry Sibiryakov
wadmanЛучше смотреть в сторону .Assign

Который, вообще-то, скопирует только Handle.
Это не страшно.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
procedure TBitmap.Assign(Source: TPersistent);
var
  DIB: TDIBSection;
begin
  if (Source = nil) or (Source is TBitmap) then
  begin
    FreeContext;
    EnterCriticalSection(BitmapImageLock);
    try
      if Source <> nil then
      begin
        TBitmap(Source).FImage.Reference;



Код: pascal
1.
2.
3.
4.
procedure TSharedImage.Reference;
begin
  Inc(FRefCount);
end;
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Глюк при копировании Image в другой Bitmap / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]