标签: aspect-ratio

调整具有固定纵横比的 Tkinter 框架的大小

我正在寻找一种方法来使 Tkinter Frames 在调整大小时表现得有点像这样:

from Tkinter import *
w = Tk()
w.aspect(1,1,1,1)
w.mainloop()
Run Code Online (Sandbox Code Playgroud)

所以我想要这里的代码:

import Tkinter as tk
from Tkconstants import *
r=tk.Tk()
content_frame=tk.Frame(r,borderwidth=5,relief=GROOVE)
content_frame.grid(row=0,column=0,sticky=(N,S,E,W))
tk.Label(content_frame,text='content').pack()
pad_frame=tk.Frame(r,borderwidth=5,relief=GROOVE)
pad_frame.grid(row=1,column=0,sticky=(N,S,E,W))
tk.Label(pad_frame,text='-pad-').pack()
r.rowconfigure(0, weight=1)
r.rowconfigure(1, weight=1)
r.columnconfigure(0, weight=1)
r.mainloop()
Run Code Online (Sandbox Code Playgroud)

它基本上创建了 2 个框架,一个应该包含一些内容(在我的应用程序中,这个框架包含一个可以调整大小的 mathplotlib 图)和一个仅用于填充。

要按照以下规则调整大小:

  • 内容框架以固定的纵横比调整大小(假设它始终需要是方形的)
  • 垫框占用剩余的(垂直)空间

有任何想法吗?我已经阅读了一段时间的手册,似乎找不到合适的东西。

-丹尼尔

python resize tkinter frame aspect-ratio

7
推荐指数
1
解决办法
7834
查看次数

根据高度调整Div的大小但保留纵横比(几乎得到它)Strange Reload bug

根据父div的宽度调整视频大小时,有很多解决方案可以保持宽高比.它们中的大多数取决于"填充顶部"和"填充底部"是基于宽度而不是高度计算的事实.

我正在尝试做类似的事情,但我想根据父div的高度调整视频大小.

要做到这一点,我需要创建一个不管高度如何都保持纵横比的div.这可能是一种蹩脚的方式,但我决定使用图像来做到这一点,因为我可以将图像的高度设置为100%的适当宽高比,并让高度排序.

我非常接近于完成这项工作.到目前为止,我已经能够使内部div完全按照我想要的方式执行,除了它不会在窗口调整大小上重绘.但是,如果我调整窗口大小然后重新加载,它就可以工作.有任何想法吗?

这是演示 (这不是我在本地完成的codepen问题)

css height aspect-ratio

7
推荐指数
1
解决办法
4860
查看次数

开发2D游戏Inside Canvas Scaler

我是Unity的新手,我已经意识到,如果资产商店没有付费的第三个插件,就很难在Unity上进行多分辨率的2D游戏.

我做了一些测试,我可以用这种方式做多分辨率支持:

1-将UI(按钮等)中的所有内容放置在渲染模式屏幕空间中的Canvas对象内 - 以16:9参考分辨率和固定宽度覆盖.

2-将其余的游戏对象放入一个名为GameManager的游戏对象中,并在渲染模式屏幕空间中使用Canvas Scaler组件 - 摄像机具有16:9参考分辨率,固定宽度和附加的主摄像头.之后,GameManager中的所有游戏对象,如玩家,平台等,都需要有一个RectTransform组件,例如CanvasRenderer组件和Image Component.

我可以继续以这种方式开发游戏吗,或者这是做错事情的方法吗?

问候

aspect-ratio unity-game-engine unity3d-2dtools

7
推荐指数
2
解决办法
1993
查看次数

无论父级的宽高比如何,保持 div 宽高比并居中

我发现这个 css 代码可以让我保持 div 的长宽比。

.container {
  width: 100%;
  height: 100%;
  background-color: red;
  position: absolute;
 }


.wrapper {
  width: 100%;
  /* whatever width you want */
  display: inline-block;
  position: relative;
  top: 50%;
  transform: translate(0%, -50%);
}
.wrapper:after {
  padding-top: 56.25%;
  /* 16:9 ratio */
  display: block;
  content: '';
}
.main {
  position: absolute;
  top: 0;
  bottom: 0;
  right: 0;
  left: 0;
 /* fill parent */
  background-color: deepskyblue;
  /* let's see it! */
  color: white;
}
Run Code Online (Sandbox Code Playgroud)

请参阅此 JSFiddle 示例:https ://jsfiddle.net/1uyo07tg/3/ …

html css aspect-ratio responsive-design

7
推荐指数
2
解决办法
2213
查看次数

以编程方式为imageView设置宽高比

我在显示没有centerCrop的风景图像时遇到问题.我尝试过PercentFramelayout,并以编程方式设置宽高比,如下所示:

laParams.percentLayoutInfo.aspectRatio = img.width.toFloat() / img.height.toFloat()
Run Code Online (Sandbox Code Playgroud)

结果还可以 - 应用程序显示没有centerCrop的所有风景图像:

发布成功加载

但有时我会得到错误的宽高比:

宽高比错误1

错误的宽高比2

我试过android:adjustViewBounds ="true"但它对我没有帮助.我用过ConstraintLayout,用XML设置宽高比如下:

<?xml version="1.0" encoding="utf-8"?>

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white"
    >

    <android.support.v7.widget.AppCompatImageView xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/photo"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintDimensionRatio="h,16:9"
        app:layout_constraintHorizontal_chainStyle="spread"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"

        />
</android.support.constraint.ConstraintLayout>
Run Code Online (Sandbox Code Playgroud)

我得到了很好的结果,但我加载了不同大小的图像.图像应该没有CenterCropFitXY.我没有找到关于设置宽高比的任何好答案,因为Constraintlayout 我想显示像instagram或vk这样的图像.

android aspect-ratio android-constraintlayout

7
推荐指数
3
解决办法
5588
查看次数

TinyMCE可防止图像大小调整

我正在使用以下方法将图像添加到TinyMCE编辑器:

var params = {
             src: filename,
             title: "Attached image: " + filename,
             width: 500
             };

ed.execCommand("mceInsertContent", false, ed.dom.createHTML("img", params));
Run Code Online (Sandbox Code Playgroud)

这会在编辑器中正确插入图像.但是,当用户点击图像时,他有能力调整图像大小.

我想知道是否有办法:

  1. 防止用户仅在一个方向上调整大小(即如何为图像保持固定的宽高比)
  2. 完全阻止用户调整图像大小

tinymce image aspect-ratio image-resizing

6
推荐指数
1
解决办法
6708
查看次数

根据高度保持div的纵横比

我必须保持 div 的纵横比相对于窗口调整大小的高度.

使用:(Y X)相对于宽度(X%)我也能保持高宽比padding-bottom;padding-top;.

所以从类比来看,我尝试过使用 padding-left;

.wrapper{
   height: Y%,
   position: relative;
}

.wrapper:after{
   padding-left: Y(x/y)%;
   display:block;
}
Run Code Online (Sandbox Code Playgroud)

但百分比值padding-left不会给包装器带来任何宽度.

如何根据高度保持div的纵横比?

css aspect-ratio fluid-layout responsive-design

6
推荐指数
1
解决办法
1297
查看次数

在边缘的图像中放置文本

在此输入图像描述 我在Visual Basic 2010中编写的这个工具应该为图像添加作者文本.用户可以设置字体不透明度和位置.为了方便起见,我想要一些位置预设,如右下角所示.我正在使用的计算是(在这种情况下右下角:

 Dim textSize As Size = TextRenderer.MeasureText(tagString + curText, curFont)
 tmpPos = New Point(srcImg.Width - textSize.Width - 10, srcImg.Height - textSize.Height - 10)
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,这适用于此示例图片.一些文本只是剪辑出来的地方. 在此输入图像描述

第一个:1024x768 | 检测到的字体大小:680x72

第二名:1688x1125 | 检测到的字体大小:680x72

我怀疑这与图像的宽高比有关,但我不知道如何修复它.

文字是这样绘制的:

 brush = New SolidBrush(color.FromArgb(alpha, color))
        gr = Graphics.FromImage(editImg)
        gr.DrawString(tagString + text, font, brush, pos)
        HauptBild.Image = editImg
Run Code Online (Sandbox Code Playgroud)

我找到了这个http://www.codeproject.com/Articles/20923/Mouse-Position-over-Image-in-a-PictureBox,它回答了我的问题.

vb.net image composition aspect-ratio visual-studio-2010

6
推荐指数
1
解决办法
392
查看次数

具有固定长宽比的ConstraintLayout链

我正在尝试根据以下布局使用3个imageViews构建活动:

   <------W------->         <------W-------->
^  +---------------+--------+---------------+
|  |               |        |               |
|  |               |        |               |
H  |       A       |   B    |      C        |
|  |               | (1:3)  |               |
|  |               |        |               |
v  +---------------+--------+---------------+
Run Code Online (Sandbox Code Playgroud)
  • H应该是父母身高的1/3
  • B的固定长宽比为1:3
  • A和C的宽度应相同

我尝试了多种解决方案,却找不到可行的解决方案。最后一个用途:

  • 设定为父母身高的33%的准则
  • A,B和C之间的水平链
  • B的固定长宽比
  • A,B和C使用match_constraint尺寸

虽然我希望求解器能够做出所需的布局,但看起来该链定义了与所有视图相似的宽度,如屏幕截图所示。

我也尝试使用a,LinearLayout但似乎无法固定其中一个项目的纵横比。

在此处输入图片说明

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@android:color/holo_blue_bright"
        app:layout_constraintBottom_toTopOf="@+id/guideline"
        app:layout_constraintDimensionRatio=""
        app:layout_constraintEnd_toStartOf="@+id/imageView2"
        app:layout_constraintHorizontal_chainStyle="spread"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0.0"
        app:srcCompat="@mipmap/ic_launcher" />

    <ImageView
        android:id="@+id/imageView2"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@android:color/holo_blue_bright"
        app:layout_constraintBottom_toTopOf="@+id/guideline" …
Run Code Online (Sandbox Code Playgroud)

android aspect-ratio android-constraintlayout constraint-layout-chains

6
推荐指数
1
解决办法
1409
查看次数

散景中具有紧密轴和匹配纵横比的图像图

我正在Django应用程序中使用bokeh 1.0.1版本,并且我想将微观表面图像显示为具有颜色编码的高度和颜色栏的可缩放图像图。从原则上讲,这是可行的,但是我很难获得具有正确纵横比的图,只显示没有周围空间的图像。

这是我要实现的示例:结果图应

  • 显示数据空间中宽度为sx=10,高度为的随机数据的图像sy=5(图像大小
  • 在初始视图和缩放时将轴限制为(0,sx)(0,sy)
  • 屏幕上的正方形至少在初始视图中应与数据空间中的正方形匹配

对于图像,我只使用nx=100x方向上的ny=100点和y方向上的点的随机数据。

这是我的第一种方法:

尝试1

from bokeh.models.ranges import Range1d
from bokeh.plotting import figure, show
from bokeh.models import LinearColorMapper, ColorBar
import numpy as np

sx = 10
sy = 5

nx = 100
ny = 100    
arr = np.random.rand(nx, ny)

x_range = Range1d(start=0, end=sx, bounds=(0,sx))
y_range = Range1d(start=0, end=sy, bounds=(0,sy))

# Attempt 1
plot = figure(x_range=x_range, y_range=y_range, match_aspect=True)

# Attempt 2
# plot = …
Run Code Online (Sandbox Code Playgroud)

python plot aspect-ratio bokeh

6
推荐指数
1
解决办法
592
查看次数